javascript - 如果存在则追加到列表或在 dynamoDB 中添加列表

标签 javascript node.js amazon-web-services amazon-dynamodb

我在 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/

相关文章:

node.js - 使用 NodeJs Mongo 和 Express 保留更新时的哈希密码

node.js - Javascript,使用 require() 并在同一个文件中导入

amazon-web-services - Elastic Beanstalk 环境的名称是否可用作环境属性?

javascript - 如何从表中获取<option>的选定值并将其存储到数组中?

node.js - Joi验证: minimum length function is not working

Javascript - 自动启动/停止 setInterval

amazon-web-services - Lambda 返回有效负载 botocore.response.StreamingBody 对象打印但随后在变量中为空

amazon-web-services - AWS beanstalk 环境没有轮换 docker 容器日志

javascript - 基于 React promised 的 Confirm Modal 无法正常工作。一旦用户取消,在随后的模式打开时,即使用户确认,它也会被取消

javascript - 如何监视 ES6 中命名导出的子函数