附加项目以使用AWS AppSync列出DynamoDB

时间:2018-06-22 16:26:33

标签: amazon-web-services amazon-dynamodb aws-appsync

这可能是一个愚蠢的问题,但我确实找不到解决该问题的方法。

因此,我有DynamoDB表,并且在AppSync api中有架构。在表中,对于每一行,都有一个字段,其中包含一个列表作为其值。那么,如何在不替换现有项目的情况下将多个项目添加到此列表中呢?我应该如何编写该突变的解析器?

这是我的桌子的屏幕截图:

table pic

您可以看到列表中有多个程序。

我怎样才能再追加两个程序。

这是我的解析器的新屏幕截图: screenshot of resolver 我想在UpdateItem操作中添加一个存在检查方法。但是当前代码不起作用。我想要的逻辑是使用“包含”方法查看“ toBeAddedProgramId”是否已经存在。但是问题是,如何从User表中提取当前程序ID列表,以及如何使程序ID列表成为“列表”类型(因为contains方法仅采用String set和String)。

我希望这个问题有意义。非常感谢你们。

最好, 哈里森

1 个答案:

答案 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

,请提供更多详细信息