使用 dynamodb SET 附加到字符串集

Zac*_*ach 1 javascript amazon-dynamodb

我查看了最近的帖子,但没有任何内容对我有用。我的 DynamoDB 表中有一个名为“friendRequests”的字符串集,我正在尝试向其中附加一个元素。但是,当我尝试使用这些参数调用 db.updateItem 时,我不断收到许多错误。这是我当前的代码,错误出在 ExpressionAttributeValues 上,但我可能花了一个小时更改语法但无济于事。

    var params = {
    TableName: "users",
    Key: { "username": { "S": addFriendInfo.friendUsername } },
    UpdateExpression: "SET friendRequests = list_append(friendRequests, :newFriend)",
    ExpressionAttributeValues: {
        ':newFriend': { "SS" : [addFriendInfo.username] }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我上面的代码。addFriendInfo.username /friendUsername 都只是字符串。目前,这给了我一个“无效的 UpdateExpression:运算符或函数的操作数类型不正确;运算符或函数:list_append,操作数类型:SS'。我已经尝试了很多事情。谁能指出我修复这个该死的语法的正确方向?

Nad*_*'El 6

正如DynamoDB 文档所解释的,DynamoDB 有两种相似但不同的类型 -列表和集合。列表是任何类型的项目的有序列表,而集合是相同类型的项目的非空、无序集合。您使用的“SS”类型是一组“字符串”。这与“列表”不同,并且您不能list_append在集合上使用,正如错误消息告诉您的那样。

要将元素添加到集合中(或者如果尚不存在则创建一个新集合),您可以使用操作ADD,例如ADD friendRequests :newFriend.