如何更新嵌套在地图内的DDB中的字符串集

wmf*_*cia 7 javascript amazon-web-services amazon-dynamodb

我正在尝试使用带有Javascript SDK的UpdateItem将字符串集添加到项目内的另一个字符串集中

我的参数是这样的:

        var params = {
            Key: {
                "MyKeyName" : {"S" : "MyKeyValue" }
            },
            TableName: "TableName",
            ExpressionAttributeNames: {
                "#Name1" : "mapName"
            },
            ExpressionAttributeValues: {
                ":Value1" : {"M" : {"StringSetName" : {
                                "SS": ["ValueToAdd"]
                                }
                            }
                }
            },
            UpdateExpression: "ADD #Name1 :Value1"
        };
Run Code Online (Sandbox Code Playgroud)

现在这不起作用,因为ADD仅适用于数字和集合,并且此集合嵌套在地图下,它会触发此错误:

操作符或函数的操作数类型不正确; operator:ADD,操作数类型:MAP

我尝试将属性名称更改为mapName.M.StringSetName,并创建了值{"SS" : ["ValueToAdd"].这不会触发错误但它也没有将值添加到集合中.

关于如何做到这一点的任何想法,听起来应该是接近我正在尝试的东西.

idb*_*old 5

你应该能够这样做:

var AWS = require('aws-sdk')
var DB = new AWS.DynamoDB.DocumentClient()
var params = {
  TableName: "TableName",
  Key: { MyKeyName: "MyKeyValue" },
  UpdateExpression: "ADD #Name1.StringSetName :Value1",
  ExpressionAttributeNames: { "#Name1" : "mapName" },
  ExpressionAttributeValues: { ":Value1": DB.createSet(["ValueToAdd"]) }
}
DB.update(params)
Run Code Online (Sandbox Code Playgroud)