can't update item in DynamoDB

前端 未结 3 1714
旧时难觅i
旧时难觅i 2020-12-09 12:58

I have been trying to figure out how to update an item in dynamoDB but have not had any success.

I know how to add and item and remove an item but not update.

相关标签:
3条回答
  • 2020-12-09 13:22

    Below code is working for me, try once

     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)
    });
    
    0 讨论(0)
  • 2020-12-09 13:24

    It looks like you are trying to update an item by using an Expression, and in this case, your UpdateExpression is incorrect. Both the ExpressionAttributeNames and ExpressionAttributeValues are used for placeholder substitution in your expression.

    I think your code would look something like this, if you want to set an attribute for an item:

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

    This will update an item that looks like this:

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

    To this:

    {  
        "Item":{  
            "hashAttributeName" : "thing_ID",
            "SessionID" : "maybe this works"
        }
    }
    
    0 讨论(0)
  • 2020-12-09 13:31

    Here's an example using AWS SDK for JavaScript v2.1.33.

    The complete example is here: 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
    });
    }
    
    0 讨论(0)
提交回复
热议问题