web-dev-qa-db-ja.com

node.js AWS dynamodb updateItem

UpdateItemで次のいくつかのポイントを達成する方法はありますか:1. DynamoDBに属性が存在しない場合は属性を追加します2. DynamoDBに属性が存在する場合は属性を更新します3.属性が含まれていない場合は属性をそのままにしますパラメータ。

次に例を示します。これはDynamoDBのオブジェクトです。

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

これが私が更新したい入力です:

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

これは、私が達成したいDynamoDBの更新された項目です。

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

「variable23」は、入力として任意の変数名にすることができます。

助けてください!私はnode.jsを使用していますが、これを実現する方法を誰かにコードを教えてもらえれば本当に感謝しています。

ありがとう!

12
Pano

これは、AWS.DynamoDB.DocumentClientのupdateメソッドが行うこととまったく同じです。

Node.jsのAWS SDK for JavaScriptでupdateメソッド here を使用する方法のサンプルコードはすでにあります。

例えば:

'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.