更新dynamodb

时间:2015-11-14 20:28:52

标签: amazon-dynamodb

我创建了简单的表(用户名,密码),密钥是用户名。 该表包含一个项目: {    “username”:“someuser”,    “密码”:“猫” }

现在,我想从“猫”更新为“狗”

dynamodb.updateItem({
    TableName: "users",
    Key: { "username": { "S" : "someuser" } },
    UpdateExpression : "SET password =:pass",
    ExpressionAttributeValues : { ":pass" : { "S" : "dog" } }
}, function(err, data) {
    if (err)
        console.log(JSON.stringify(err, null, 2));
    else
        console.log(JSON.stringify(data, null, 2));
});

但是我收到了错误:

{
  "message": "Invalid attribute value type",
  "code": "ValidationException",
  "time": "2015-11-14T20:22:36.381Z",
  "statusCode": 400,
  "retryable": false
}

1 个答案:

答案 0 :(得分:0)

最后我发现dynamodb javascript shell与在AWS上运行的dynamodb不同。

上面的错误不会出现在真正的dynamodb上。

编辑: 例如,以下工作:

       var params = {
            TableName: config.SCRIPTTABLE,
            Key: { id : { S: script.id }},
            UpdateExpression: "SET title = :title, description = :desc, code = :code, tags = :tags, pub = :pub",
            ExpressionAttributeValues: {
                ":title":   { S: script.title },
                ":desc" :   { S: script.description },
                ":code" :   { S: script.code },
                ":tags" :   { SS: script.tags },
                ":pub"  :   { BOOL: script.pub }
            },
            ReturnValues: "ALL_NEW"
        };

        dynamodb.updateItem(params, function(err, data)  {

            if (err) {
                console.log(JSON.stringify(err));
                context.fail('INTERNAL_SERVER_ERROR');
            } else {
                context.succeed();
            }
        });