web-dev-qa-db-ja.com

NodeJのDynamoDB putitem-オブジェクトの配列

AWS LambdaからDynamoDBに小さなAPIを設定しようとしていますが、オブジェクトの配列をキーに書き込むことができるかどうか、またどのように書き込むことができるかを理解できません。

次のようなオブジェクトがあります

{
    "teamName": "Team Awesome",
    "members": [
        {
            "email": "[email protected]",
            "name": "Bob"
        },
        {
            "email": "[email protected]",
            "name": "Alice"
        }
    ]
} 

メンバー配列は私に問題を与えています、ドキュメントではそれはリストのタイプを考慮して行うことができるように見えますが、それを行う方法の例はなく、それを試す方法が不足しています。

では、この形式で何かを書くことはまったく可能ですか?その場合、どのようにしてそれを行うのですか?

コード例-何を置くか???

var AWS = require('aws-sdk');
var dynamodb = new AWS.DynamoDB();

exports.handler = function(event, context) {
    var tableName = "GDCCompetition";
    var datetime = new Date().getTime().toString();

    DynamoDB.putItem({
        "TableName": tableName,
        "Item": {
            "datetime": {
                "N": datetime
            },
            "teamName": {
                "S": event.teamName
            },
            "members": ???
        }
    });
}
19
Erik Honn

ドキュメントは明確ではありませんが、DocClientと呼ばれるものがあります。通常のJSオブジェクトをそれに渡すと、すべての解析とAWSオブジェクトへの変換(すべてのタイプを使用)が行われます。次のように使用できます。

var AWS = require("aws-sdk");
var DynamoDB = new AWS.DynamoDB.DocumentClient();

var params = {
    TableName: "MyTable",
    Item: {
        "teamName": "Team Awesome",
        "members": [
            {
                "email": "[email protected]",
                "name": "Bob"
            },
            {
                "email": "[email protected]",
                "name": "Alice"
            }
         ]
    } 
};

DynamoDB.put(params, function (err) {
     if (err) {
         return throw err;
     }

     //this is put
});
29