使用PutItem
添加新项目,然后使用返回值设置为UpdateItem
的{{1}}进行更新时,预计返回值是否会保持一致?
例如放置一个项目;
ALL_NEW
然后更新项目;
{key: 1a a: 1}
我希望ReturnValues:ALL_NEW返回
{key: 1, b: 2}
但看起来情况并非如此?
答案 0 :(得分:0)
我已经更新了成功执行put项目的项目,并按预期得到了结果。
注意:在DynamoDB本地执行测试。
ALL_NEW - 返回项目的所有属性 在UpdateItem操作之后。
示例代码: -
var docClient = new AWS.DynamoDB.DocumentClient();
var table = "post";
var paramsPut = {
TableName: table,
Item: {
"postId": '16',
"Pos": {
"key": "1a", "a": "1"
}
}
};
var paramsUpdate = {
TableName: "post",
Key: {
"postId": "16"
},
UpdateExpression: "SET Pos.#key = :keyVal, Pos.b = :keyVal2",
ExpressionAttributeNames: {
"#key": "key"
},
ExpressionAttributeValues: {
":keyVal": "1",
":keyVal2": "2"
},
ReturnValues: "ALL_NEW"
};
console.log("Adding a new item...");
docClient.put(paramsPut, function (err, data) {
if (err) {
console.error("Unable to add item. Error JSON:", JSON.stringify(err,
null, 2));
} else {
console.log("Added item:", JSON.stringify(data, null, 2));
console.log("Then Updating the item...");
docClient.update(paramsUpdate, function (err, data) {
if (err) {
console.error("Unable to update item. Error JSON:", JSON.stringify(err, null, 2));
} else {
console.log("UpdateItem succeeded:", JSON.stringify(data));
}
});
}
});
<强>输出: - 强>
Adding a new item...
Added item: {}
Then Updating the item...
UpdateItem succeeded: {"Attributes":{"Pos":{"a":"1","b":"2","key":"1"},"postId":
"16"}}