0 votes
1 view
in AWS by (15.2k points)

I'm trying to set up a small api from AWS Lambda to DynamoDB and I am having trouble figuring out if and how I can write an array of objects into a key.

I have an object like

{

    "teamName": "Team Awesome",

    "members": [

        {

            "email": "person-1@example.com",

            "name": "Bob"

        },

        {

            "email": "person-2@example.com",

            "name": "Alice"

        }

    ]

The member's array is giving me issues, in the docs, it looks like it can be done considering the list types, but there is just no example how HOW to do it, and I am running out of ways to try it.

So is it possible to write something in this format at all and how do you, in that case, do it?

Example code - what do I put at ???

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": ???

        }

    });

}

1 Answer

0 votes
by (36.2k points)

The documentation isn't very obvious, however, there's a factor known as DocClient, you can pass a usual JS object to it and it'll do all the parsing and transformation into AWS object (with all the types). You can use it like this:

var AWS = require("aws-sdk");

var DynamoDB = new AWS.DynamoDB.DocumentClient();

var params = {

    TableName: "MyTable",

    Item: {

        "teamName": "Team Awesome",

        "members": [

            {

                "email": "person-1@example.com",

                "name": "Bob"

            },

            {

                "email": "person-2@example.com",

                "name": "Alice"

            }

         ]

    } 

};

DynamoDB.put(params, function (err) {

     if (err) {

         return throw err;

     }

     //this is put

});

...