这可能是一个愚蠢的问题,但我确实找不到解决该问题的方法。
因此,我有DynamoDB表,并且在AppSync api中有架构。在表中,对于每一行,都有一个字段,其中包含一个列表作为其值。那么,如何在不替换现有项目的情况下将多个项目添加到此列表中呢?我应该如何编写该突变的解析器?
这是我的桌子的屏幕截图:
您可以看到列表中有多个程序。
我怎样才能再追加两个程序。
这是我的解析器的新屏幕截图: screenshot of resolver 我想在UpdateItem操作中添加一个存在检查方法。但是当前代码不起作用。我想要的逻辑是使用“包含”方法查看“ toBeAddedProgramId”是否已经存在。但是问题是,如何从User表中提取当前程序ID列表,以及如何使程序ID列表成为“列表”类型(因为contains方法仅采用String set和String)。
我希望这个问题有意义。非常感谢你们。
最好, 哈里森
答案 0 :(得分:4)
要将项目追加到列表,应使用DynamoDB UpdateItem
操作。
如果您直接使用DynamoDB,https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.UpdateExpressions.html#Expressions.UpdateExpressions.SET.AddingListElements
在AWS AppSync中,您可以使用DynamoDB数据源并在请求映射模板中指定DynamoDB UpdateItem
操作。
您的UpdateItem
请求模板可能如下所示(对其进行修改以满足您的需求):
{
"version" : "2017-02-28",
"operation" : "UpdateItem",
"key" : {
"id" : { "S" : "${context.arguments.id}" }
},
"update" : {
"expression" : "SET #progs = list_append(#progs, :vals)",
"expressionNames": {
"#progs" : "programs"
},
"expressionValues": {
":vals" : {
"L": [
{ "M" : "id" : { "S": "49f2c...." } },
{ "M" : "id" : { "S": "931db...." } }
]
}
}
}
}
我们有一个教程,如果您有兴趣学习更多https://docs-aws.amazon.com/appsync/latest/devguide/tutorial-dynamodb-resolvers.html#modifying-the-updatepost-resolver-dynamodb-updateitem
,请提供更多详细信息