web-dev-qa-db-fra.com

DynamoDB putitem dans NodeJs - tableaux d'objets

J'essaie de configurer une petite API depuis AWS Lambda vers DynamoDB et j'ai du mal à déterminer si et comment je peux écrire un tableau d'objets dans une clé.

J'ai un objet comme

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

Le tableau des membres me donne des problèmes, dans les documents, il semble que cela puisse être fait en tenant compte des types de liste, mais il n'y a tout simplement aucun exemple comment COMMENT le faire, et je suis à court de moyens pour l'essayer.

Est-il donc possible d'écrire quelque chose dans ce format et comment le faites-vous dans ce cas?

Exemple de code - que dois-je mettre ???

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

La documentation n'est pas vraiment évidente, mais il y a une chose appelée DocClient, vous pouvez lui passer un objet JS habituel et il fera toute l'analyse et la transformation en objet AWS (avec tous les types). Vous pouvez l'utiliser comme ceci:

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