【发布时间】:2018-12-20 07:59:46
【问题描述】:
当我使用AppSync和DynamoDB作为数据库源时,如何自动生成ID?
我的类型如下所示
type Post {
id: ID!
creator: String!
createdAt: String!
like: Int!
dislike: Int!
frozen: Boolean!
}
输入如下所示
input CreatePostInput {
id: ID!
creator: String!
createdAt: String!
like: Int!
dislike: Int!
frozen: Boolean!
}
而我的变异显然是两者的结合
createPost(input: CreatePostInput!): Post
但是,当我进行插入时,我必须执行以下操作
mutation createPost{
createPost(input:{
id:2
creator:"some creator"
createdAt:"some date"
like:0
dislike:0
frozen:false
}){
id
creator
createdAt
like
dislike
frozen
}
}
如果不知道id 现在在做什么,我就无法插入帖子。有没有办法我可以提供null 或任何随机的id 和DynamoDB 或AppSync 在插入表之前自动创建下一个索引?
当我将
input CreatePostInput更新为 not 时产生错误 接受任何ID
{
"data": {
"createPost": null
},
"errors": [
{
"path": [
"createPost"
],
"data": null,
"errorType": "DynamoDB:AmazonDynamoDBException",
"errorInfo": null,
"locations": [
{
"line": 2,
"column": 3,
"sourceName": null
}
],
"message": "One or more parameter values were invalid: Type mismatch for key id expected: S actual: NULL (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: ValidationException; Request ID: 629QEM7MH9BRAJ9MHU3FM1S0U3VV4KQNSO5AEMVJF66Q9ASUAAJG)"
}
]
}
我的解析器模板
{
"version" : "2017-02-28",
"operation" : "PutItem",
"key" : {
## If object "id" should come from GraphQL arguments, change to $util.dynamodb.toDynamoDBJson($ctx.args.id)
"id": $util.dynamodb.toDynamoDBJson($util.autoId()),
},
"attributeValues" : $util.dynamodb.toMapValuesJson($ctx.args)
}
【问题讨论】:
标签: amazon-web-services amazon-dynamodb aws-appsync