Javascript Dynamodb:使用地图索引更新地图数组
我试图更新Dynamodb中对象的贴图数组中的奇异值, 我的代码如下所示Javascript Dynamodb:使用地图索引更新地图数组,javascript,amazon-web-services,amazon-dynamodb,dynamodb-queries,Javascript,Amazon Web Services,Amazon Dynamodb,Dynamodb Queries,我试图更新Dynamodb中对象的贴图数组中的奇异值, 我的代码如下所示 var update_score = { TableName: 'ABC', Key:{ "SortKey": "ABC123", "RangeKey": "abc_123_xy
var update_score = {
TableName: 'ABC',
Key:{
"SortKey": "ABC123",
"RangeKey": "abc_123_xyz"
},
UpdateExpression: "set #lp[0].#grd = :num",
ExpressionAttributeNames :{
'#lp': 'scores',
'#grd':'score1'
},
ExpressionAttributeValues:{
':num': 35
},
ReturnValues:"UPDATED_NEW"
};
console.log("getting in params1", update_score);
docClient.update(update_score, function(err, data) {
if (err) {
console.error("Unable to update item. Error JSON:", JSON.stringify(err, null, 2));
callback(null,JSON.stringify(err, null, 2));
} else {
console.log("UpdateItem succeeded:", JSON.stringify(data, null, 2));
callback(null,JSON.stringify(data, null, 2));
}
});
在UpdateExpression:“set#lp[0]。#grd=:num”,
因为我想扩展这个逻辑,允许前端通过变量更新发送的值,而不仅仅是特定的值,比如[0]
我试过了
var update_score = {
TableName: 'ABC',
Key:{
"SortKey": "ABC123",
"RangeKey": "abc_123_xyz"
},
UpdateExpression: "set #lp[#index].#grd = :num",
ExpressionAttributeNames :{
'#lp': 'scores',
'#grd':'score1',
'#index' : indexOf_score_to_be_updated
},
ExpressionAttributeValues:{
':num': 35
},
ReturnValues:"UPDATED_NEW"
};
谢谢你的帮助 我认为答案是需要在
UpdateExpression
本身中放入一个实际整数。当我为Scylla交流发电机编写测试时,一个与DynamoDB兼容的开源数据库,我注意到不幸的是,您也不能使用expressionattributevalue-set#lp[:index]。#grd=:num
也不起作用