no se puede actualizar el elemento en DynamoDB

He estado tratando de averiguar cómo actualizar un elemento en dynamoDB pero no he tenido ningún éxito.

Sé cómo agregar un elemento y eliminar un elemento pero no actualizarlo.

Aquí está mi código:

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

Parece que está intentando actualizar un elemento utilizando una expresión , y en este caso, su UpdateExpression es incorrecta. Tanto ExpressionAttributeNames como ExpressionAttributeValues se usan para la sustitución de marcadores de posición en su expresión.

Creo que su código se vería así, si desea establecer un atributo para un elemento:

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

Esto actualizará un elemento que se ve así:

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

A esto:

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

Aquí hay un ejemplo utilizando AWS SDK para JavaScript v2.1.33.

El ejemplo completo está aquí: 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 }); } 

El código de abajo funciona para mí, inténtalo una vez

  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) });