Извлечение данных в лямбду из API-шлюза - PullRequest
0 голосов
/ 22 марта 2020

Я пытаюсь получить данные из API-шлюза в Lambda и сохранить их в DynamoDB. Ниппеты моего кода:

Лямбда

const AWS = require('aws-sdk');
const dynamodb = new AWS.DynamoDB({region: 'eu-central-1', apiVersion: '2012-08-10'});

exports.handler = (event, context, callback) => {
    const currentTime = new Date().toISOString();
    const _id = currentTime + "-" + ('-'+Math.random()).substr(3);
    const params = {
        Item: {
            "_id": {
                S: _id
            },
            "dailyRentalRate": {
                N: event.dailyRentalRate
            },
            "title": {
                S: event.title
            },
            "numberInStock": {
                N: event.numberInStock
            },
            "updated": {
                S: currentTime
            }
        },
        TableName: "vidly_movies"
    };

    dynamodb.putItem(params, function(err, data) {
        if (err) {
            console.log(err);
            callback(err);
        } else {
            console.log(data);
            callback(null, data);
        }
    });
};

Затем я посылаю следующие JSON от шлюза в Лямбду:

{
    "_id": "sd5sfdg46a",
    "dailyRentalRate": 5,
    "title": "something",
    "numberInStock": 5,
    "updated": "2020-03-19"
}

Пока хорошо. Все отлично работает Теперь я хочу отправить JSON с ребенком, как это:

{
    "_id": "sd5sfdg46a",
    "dailyRentalRate": 5,
    "title": "something",
    "numberInStock": 5,
    "updated": "2020-03-19",
    "genre": {
        "_id": "asdaga",
        "name": "Action"
    }
}

Я пытаюсь получить данные с этим кодом, который не работает:

const AWS = require('aws-sdk');
const dynamodb = new AWS.DynamoDB({region: 'eu-central-1', apiVersion: '2012-08-10'});

exports.handler = (event, context, callback) => {
    const currentTime = new Date().toISOString();
    const _id = currentTime + "-" + ('-'+Math.random()).substr(3);
    const params = {
        Item: {
            "_id": {
                S: _id
            },
            "dailyRentalRate": {
                N: event.dailyRentalRate
            },
            "title": {
                S: event.title
            },
            "numberInStock": {
                N: event.numberInStock
            },
            "updated": {
                S: currentTime
            },
            "genre": {
                M: {
                    "_id": {
                        S: event.genre._id
                    },
                    "name": {
                        S: event.genre.name
                    }
                }
            }
        },
        TableName: "vidly_movies"
    };

    dynamodb.putItem(params, function(err, data) {
        if (err) {
            console.log(err);
            callback(err);
        } else {
            console.log(data);
            callback(null, data);
        }
    });
};

Ошибка где-то здесь: event.genre._id и event.genre.name. Но я не знаю, что использовать для доступа к Ребенку.

1 Ответ

0 голосов
/ 22 марта 2020

Теперь это работает! Тот же код, ничего не изменилось! Я не могу смириться с этим. Ничего не изменилось и теперь работает. В любом случае, спасибо!

...