我正在尝试在dynamo数据库列表中执行最简单的操作之一“更新”。
表格架构-
businessId : String, customers: StringSet, itemCode : NumberSet
我有一个通过put插入的条目-
bussinessId = "sampleBusiness", cuatomers 0: "cust1", itemCode 0: 4554
我想使用更新添加更多项目,这是我尝试过的-
var updateRequest = {
'TableName' : tableName,
'Key' : {
'businessId' : {
"S" : businessId
}
},
'UpdateExpression' : "SET itemCode[2] =:attrValue",
'ExpressionAttributeValues' : {
':attrValue' : {
"N" : "564564"
}
}
};
这给我错误-
文件中提供的文件路径无效
我想附加新条目,因此也尝试过此操作-
var sm = [];
sm[0] = "56465";
//Add business to
var updateRequest = {
'TableName' : tableName,
'Key' : {
'businessId' : {
"S" : businessId
}
},
'UpdateExpression' : 'SET #attrName = list_append(#attrName, :attrValue)',
'ExpressionAttributeNames' : {
'#attrName' : 'itemCode'
},
'ExpressionAttributeValues' : {
':attrValue' : {
"NS" : sm
}
}
};
这给出:
ValidationException:无效的UpdateExpression:运算符或函数的操作数类型错误;运算符或函数:list_append,操作数类型:NS
也尝试过-
':attrValue' : {
"N" : "4564"
}
但是同样的错误。
按照http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.Modifying.html中提供的示例,它将为
FiveStar
审阅列表添加一个新元素。表达式属性名称#pr
为ProductReviews
;属性值:r
是一个元素列表。如果列表先前有两个元素[0]和[1],则新元素将为[2]。SET #pr.FiveStar = list_append(#pr.FiveStar, :r)
说
:r
是一个元素列表我在这里错过了一些东西。要求是否有人可以提供帮助。打击了很长时间。我只想使用nodeJS在dynamo db中的集合中追加元素。
最佳答案
看起来像这样:
'ExpressionAttributeValues' : {
':attrValue' : {
"NS" : sm
}
}
应该是这样的:
'ExpressionAttributeValues' : {
':attrValue' : {
"S" : sm
}
}
或者,您需要将此值
sm[0] = "56465";
强制转换为数字Number("56465")
,并将:attrValue
数据类型"S"
更改为"N"
。取决于您如何配置表。也有可能应该将
:attrValue
分配为"S" : sm[0]
,因为现在您正在传递"S"
整个数组。