web-dev-qa-db-fra.com

node.js AWS dynamodb updateItem

Est-il possible d'atteindre les quelques points suivants avec updateItem: 1. Ajoutez des attributs si les attributs n'existent pas dans DynamoDB 2. Mettez à jour les attributs si les attributs existent dans DynamoDB 3. Laissez ces attributs tels qu'ils sont si les attributs ne sont pas contenus dans les params.

Voici un exemple: Voici l'objet dans DynamoDB:

{
    id: "1234",
    variable1: "hello",
    variable2: "world"
}

Voici l'entrée que je souhaite mettre à jour:

{
    id: "1234",
    variable1: "hello2",
    variable23: "dog"  // the variable name "variable23" could be anything
}

Voici l'élément mis à jour dans DynamoDB que je souhaite atteindre:

{
    id: "1234",
    variable1: "hello2",
    variable2: "world",
    variable23: "dog"
}

La "variable23" peut être n'importe quel nom de variable en entrée.

Aidez-moi! J'utilise node.js, j'apprécie vraiment si quelqu'un peut me montrer du code pour y parvenir.

merci!

12
Pano

C'est exactement ce que fait la méthode update d'AWS.DynamoDB.DocumentClient.

Il existe déjà un exemple de code sur la façon d'utiliser la méthode updateici pour AWS SDK for JavaScript dans Node.js.

Par exemple:

'use strict';

const aws = require('aws-sdk');

// It is recommended that we instantiate AWS clients outside the scope of the handler 
// to take advantage of connection re-use.
const docClient = new aws.DynamoDB.DocumentClient();

exports.handler = (event, context, callback) => {
    const params = {
        TableName: "MYTABLE",
        Key: {
            "id": "1"
        },
        UpdateExpression: "set variable1 = :x, #MyVariable = :y",
        ExpressionAttributeNames: {
            "#MyVariable": "variable23"
        },
        ExpressionAttributeValues: {
            ":x": "hello2",
            ":y": "dog"
        }
    };

    docClient.update(params, function(err, data) {
        if (err) console.log(err);
        else console.log(data);
    });
};
16
Khalid T.