我目前正在使用AWS AppSync,并找到了一个Web教程。 (链接:https://www.youtube.com/watch?v=0Xbt7VqkJNc)
总而言之,这是一个适合初学者的好例子,但是在创建本教程演示的变体/查询时遇到一些问题。
问题在于无法设置单个ID号(例如“ 12345”),因为输出始终是自动生成的ID号。 是否可以更改DynamoDB中的配置,或者此问题与AWS AppSync中的解析器有关?
代码示例:
mutation createTodo {
createTodo(input: {
name:"Get milk",
completed: false
}) {
id}
}
query getTodo {
getTodo(id: "afda5d05-bad0-4436-9f8b-76e92d1228c3" ) {
id name completed} }
输出:
{
"data": {
"getTodo": {
"id": "afda5d05-bad0-4436-9f8b-76e92d1228c3",
"name": "Get milk",
"completed": false
}
}
}
提前谢谢!
答案 0 :(得分:2)
视频中演示的示例在输入中接受id
,name
和completed
字段。如果每次都需要一个随机生成的ID,则可以修改架构以仅在查询name
中传递completed
和createTodo
。然后,您需要为此查询字段编辑解析器(可以通过单击“模式”页面上“解析器”部分下的createTodo
链接来进行此操作)。您可以使用以下定义编辑“请求映射模板”,这样,每次创建Todo时都会生成一个随机ID:
{
"version": "2017-02-28",
"operation": "PutItem",
"key": { "id": { "S": "$util.autoId()"} },
"attributeValues": {
"name": { "S": "$context.arguments.name" },
"completed": { "S": "$context.arguments.completed" }
}
}
如果在上面的示例中看到第5行,我们将使用内置的实用程序函数来生成autoId:$util.autoId()
。这样一来,您就可以为突变随机设置ID。
您可以找到此代码,以及我们其他一些受支持的VTL实用程序功能here。