我正在尝试使用带有Javascript SDK的UpdateItem将字符串集添加到项目内的另一个字符串集
我的参数是这样的:
var params = {
Key: {
"MyKeyName" : {"S" : "MyKeyValue" }
},
TableName: "TableName",
ExpressionAttributeNames: {
"#Name1" : "mapName"
},
ExpressionAttributeValues: {
":Value1" : {"M" : {"StringSetName" : {
"SS": ["ValueToAdd"]
}
}
}
},
UpdateExpression: "ADD #Name1 :Value1"
};
现在这不起作用,因为ADD仅适用于Numbers和Sets,而且这个集合嵌套在地图下,它会触发此错误:
操作符或函数的操作数类型不正确; operator:ADD,操作数类型:MAP
我尝试将属性名称更改为mapName.M.StringSetName,并使值{"SS" : ["ValueToAdd"]
。这并没有触发错误,但它也没有将值添加到集合中。
关于如何做到这一点的任何想法,听起来应该是接近我正在尝试的东西。
答案 0 :(得分: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)