我在 DynamoDB 中有一个产品表,其中包含一些项目。现在我需要将买家列表添加到可以增长的产品中,即附加到列表。它适用于如果我有一个空列表或一个包含表项中某些项目的列表,但对于第一次添加它会引发错误。有什么方法可以检查列表是否存在然后追加或添加列表。这是我的代码
let params = {
TableName: "product",
ExpressionAttributeNames: {
"#Y": "buyer"
},
ExpressionAttributeValues: {
":y": ["PersonXYZ"]
},
Key: {
id: 'Hy2H4Z-lf'
},
UpdateExpression: "SET #Y = list_append(#Y,:y)"
};
updateItemInDDB(params).then((data) => {
res.status(200).send(data);
}, err => {
console.log(err);
res.sendStatus(500);
});
UpdateItemInDDB 只是一个接受参数并在其上运行 dnamodb 代码的函数。我正在将 javascript sdk 用于 DynamoDB 和 Document Client。
最佳答案
var params = {
TableName: "user",
Key: {
"user_id": {
S: user_id
}
},
UpdateExpression: "SET #ri = list_append(if_not_exists(#ri, :empty_list), :vals)",
ExpressionAttributeNames: {
"#ri": "images"
},
ExpressionAttributeValues: {
":vals": {"L": [{
"S": "dummy data"
}]},
":empty_list": {"L": []}
},
ReturnValues: 'ALL_NEW'
};
":empty_list": {"L": []} 如果你想设置空列表,这很重要,否则它会给出以下异常。
"errorMessage": "ExpressionAttributeValues contains invalid value: Supplied AttributeValue is empty, must contain exactly one of the supported datatypes for key :empty_list",
"errorType": "ValidationException"
关于javascript - 如果存在则追加到列表或在 dynamoDB 中添加列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47415522/