首页 > 解决方案 > 使用 dynamodb SET 附加到字符串集

问题描述

我查看了最近的帖子,但没有任何内容对我有用。我的 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] }
    }
}

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

标签: javascriptamazon-dynamodb

解决方案


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

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


推荐阅读