我只想尝试在DynamoDB中设置一个数字。此表达式正在使用无类型列表。但是为了节省空间,因为它只是存储数字,所以我将所有内容都移到普通数字集。现在无论我多么修补它,我都无法通过它。
var phoneID = req.body.PhoneID;
var category = req.body.ratingCategory;
var ratingToAdd = [Number(req.body.rating)]
var dbparams = {
"TableName": "Venue_Ratings",
Key: {
"PhoneID" : phoneID
},
"UpdateExpression": "SET #categoryName = list_append(#categoryName, :rating)",
"ExpressionAttributeNames" : {
"#categoryName" : category
},
"ExpressionAttributeValues": {
":rating": ratingToAdd
},
"ReturnValues": "ALL_NEW"
};
此错误正在抛出An operand in the update expression has an incorrect data type
我也尝试将更新表达式更改为ADD
表达式,而不是ADD #categoryName :rating
。
我尝试将ratingToAdd
更改为不在数组中的普通数字,数组中的字符串以及不在数组中的普通字符串。
我使用docClient.update
方法调用数据库。
我已经验证了db中的集合实际上是数字集并且它们存在。
我在这里缺少什么?谢谢你的帮助。
答案 0 :(得分:1)
以下代码应将数字添加到数字集(即DynamoDB数据类型'NS')。
在UpdateExpression中将此功能与ADD一起使用: -
docClient.createSet([Number(5)])
<强>代码: - 强>
var params = {
TableName : "Movies",
Key : {
"yearkey" : 2016,
"title" : "The Big New Movie 1"
},
UpdateExpression : "ADD #category :categorySet",
ExpressionAttributeNames: {
'#category' : 'category'
},
ExpressionAttributeValues: {':categorySet' : docClient.createSet( [Number(5)])},
ReturnValues: 'UPDATED_NEW'
};