[英]Dynamodb - Update value of JSON object in array of objects
下面是存儲在DynamoDb中的示例項目對象/記錄。 我使用AWS.DynamoDB.DocumentClient
和AWS.DynamoDB.DocumentClient
來訪問數據庫。
我正在構建一個PUT函數來更新數組中JSON對象的狀態。 該函數可以訪問Item的uuid
和room的uuid
。 在給定JSON對象數組的status
,如何(創造性地)更新相應status
字段的值?
PARAMS:
let params = {
TableName: room-table,
Key: {
uuid: event.body.uuid
},
UpdateExpression : "??",
ExpressionAttributeNames: {
"??":"??"
},
ExpressionAttributeValues:{
"??":"??"
},
ReturnValues:"ALL_NEW"
};
物品對象:
{
"Item": {
"uuid": "77b1e88e-5e60-44d9-b6ca-aec345c0dc99",
"rooms": [
{
"room": "303",
"status": "pending",
"uuid": "b8f1c1a8-04a9-4c2e-82ad-bc3e81face35"
},
{
"room": "302",
"status": "pending",
"uuid": "42fdc61a-4a25-4316-90c9-60209875d208"
},
{
"room": "678",
"status": "pending",
"uuid": "7bedc115-20ed-4c3e-9cd7-7fed0520f4df"
}
],
"status": "pending"
}
}
使用ExpressionAttributeValues
無法做到這一點。 我必須構建一個修改對象的函數,類似於下面:
function setStatus(jsonObj, uuid, newStatus) {
for (var i=0; i<jsonObj.length; i++) {
if (jsonObj[i].uuid === uuid) {
jsonObj[i].status = newStatus;
return jsonObj;
}
}
}
let params = {
TableName: room-table,
Key: {
uuid: event.body.uuid
},
UpdateExpression : "SET #stat = :stat",
ExpressionAttributeNames: {
"#stat": "status"
},
ExpressionAttributeValues:{
":stat": "updatedStatusValue"
},
ReturnValues:"ALL_NEW"
};
需要ExpressionAttributeNames,因為status是DynamoDB保留字 。 有關屬性名稱和屬性值占位符的更多信息,請參見DynamoDB文檔 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.