更新Dynamo DB内部对象的键值

时间:2019-05-07 10:24:03

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

我将以下对象保存到Dynamo DB中。

   const obj =  {
        data:{
            src:"s3://some_bucket_name/folder/foo.html",
            dest:"s3://some_bucket_name/folder/bar.pdf"
        },
        op: "someFunc",
        status: "not started"

    }

这有效,我的数据被保存在DynamoDB中。 但是,我想在另一个地方更新数据的状态,并将其更改为已启动

这是我用于更新状态的代码,但是它不起作用。 它说“在params.Key [status]中发现了意外的密钥”

          const params = {
                TableName: 'tableName',
                Key: {
                    "status": record.dynamodb.Keys.Document.S
                },
                UpdateExpression: "SET started = :started",
                ExpressionAttributeValues: {
                    ":started": "started"
                },
                ReturnValues: "UPDATED_NEW"
            }


          db.updateItem(params).promise()
            .then(data => console.log(data, 'updated data data'))
            .catch(err => console.log(err, 'err updating item'))

我在SO和在线上检查了其他示例,但是我无法使其正常运行,有人可以指出我做错了什么吗?

1 个答案:

答案 0 :(得分:1)

Key应该引用表的主键属性。我不相信status字段是表的主键。

status字段属于UpdateExpression,例如

UpdateExpression: "SET status = :started",