无法更新DynamoDB中的项目

我一直在试图找出如何更新dynamoDB中的项目,但没有任何成功。

我知道如何添加和项目和删除项目,但不更新。

这是我的代码:

dynamoDB.updateItem({ "TableName": "mytable", "Key": { "thing_ID": {"S": "0000"} }, "UpdateExpression": "SET", "ExpressionAttributeNames": { "SessionID": "" }, "ExpressionAttributeValues": { "SessionID": { "S": "maybe this works", } } }) 

它看起来像你试图通过使用一个expression式来更新一个项目,在这种情况下,你的UpdateExpression是不正确的。 ExpressionAttributeNamesExpressionAttributeValues都用于ExpressionAttributeValues中的占位符replace 。

我认为你的代码看起来像这样,如果你想设置一个项目的属性:

 dynamoDB.updateItem({ "TableName" : "exampleTable", "Key" : { "hashAttributeName" : { "S" : "thing_ID" } }, "UpdateExpression" : "SET #attrName =:attrValue", "ExpressionAttributeNames" : { "#attrName" : "SessionID" }, "ExpressionAttributeValues" : { ":attrValue" : { "S" : "maybe this works" } } }); 

这会更新一个如下所示的项目:

 { "Item":{ "hashAttributeName":"thing_ID" } } 

对此:

 { "Item":{ "hashAttributeName" : "thing_ID", "SessionID" : "maybe this works" } } 

以下是使用AWS SDK for JavaScript v2.1.33的示例。

完整的例子在这里: https : //github.com/mayosmith/HelloDynamoDB/blob/master/HelloDynamoDB.html

 /* ----------------------------------------------------------------- AWS configure Note: this is a simple experiement for demonstration purposes only. Replace the keys below with your own. Do not include the secret key in an actual production environment, because, then, it wont be secret anymore... ----------------------------------------------------------------- */ AWS.config.update({accessKeyId: 'AKIAJUPWRIYYQGDB6AFA', secretAccessKey: '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'}); // Configure the region AWS.config.region = 'us-west-2'; //us-west-2 is Oregon //create the ddb object var ddb = new AWS.DynamoDB(); /* ----------------------------------------------------------------- Update the Table ----------------------------------------------------------------- */ //update the table with this data var params = { Key: { name: {S: 'John Mayo-Smith'}, city: {S: 'New York'} }, AttributeUpdates: { food: { Action: 'PUT', Value: {S: 'chocolate'} } }, TableName: 'sampletable', ReturnValues: 'ALL_NEW' }; //update the table update(); /* ----------------------------------------------------------------- Get Item from the Table ----------------------------------------------------------------- */ //attribute to read var readparams = { Key: { name: {S: 'John Mayo-Smith'}, city: {S: 'New York'} }, AttributesToGet: ['food'], TableName: 'sampletable' }; //get the item read(); /* ----------------------------------------------------------------- function update() Description: Calls updateItem which is part of the AWS Javascript SDK. Returns: JSON object (the object is stringifyed so we can see what's going on in the javascript console) ----------------------------------------------------------------- */ function update(){ ddb.updateItem(params, function(err, data) { if (err) { return console.log(err); } console.log("We updated the table with this: " + JSON.stringify(data)); }); } /* ----------------------------------------------------------------- function read() Description: Calls getItem which is part of the AWS Javascript SDK. Returns: JSON object (the object is stringifyed so we can see what's going on in the javascript console) ----------------------------------------------------------------- */ function read(){ ddb.getItem(readparams, function(err, data) { if (err) { return console.log(err); } console.log(": " + data); console.log("John's favorite food is: "+ JSON.stringify(data.Item.food.S)); // print the item data }); } 

下面的代码是为我工作,尝试一次

  var item = {"endTime": "7pm", "imageName": "7abcd", "startTime": "7pm"}; dynamo.updateItem({ TableName:'tableName', Key:{"primaryKey":"primaryKeyValue"}, AttributeUpdates: { images: { Action: "ADD", Value: item } }},function(err, data) { if (err) console.log(err); else console.log(data) });