Не могу получить элемент - не получаю никаких результатов - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь сделать очень простой запрос getitem к DynamoDb из lambda, но я не получаю никаких результатов.

Да, я проверил разрешения, и они убедились, что они предоставлены дляФункции лямбда-выполнения и динамического getetm для соответствующей таблицы и их правильное присоединение к лямбда-функции.

Да, в этой таблице определенно есть запись с именем: "Bobas".

Вот что я получаю из console.logs:

START RequestId: 1db3eebb-8edb-4bfa-987d-4afc9831c7b6 Version: $LATEST
END RequestId: 1db3eebb-8edb-4bfa-987d-4afc9831c7b6
REPORT RequestId: 1db3eebb-8edb-4bfa-987d-4afc9831c7b6  Duration: 680.59 ms Billed Duration: 700 ms Memory Size: 128 MB Max Memory Used: 91 MB  Init Duration: 366.03 ms    

Код следующий:

const AWS = require('aws-sdk');
AWS.config.update({ region: 'ca-central-1'});

exports.handler = async (event, context, callback) => {
    let resp;
    // TODO implement
    const ddb = new AWS.DynamoDB({ apiVersion: '2012-10-08'});

    const params = {
        TableName: 'trivia-users',
        Key: {
            name: {
                S: 'Bobas'
            }
        }
    }

    ddb.getItem(params, (err, data) => {
        let resp = data;
        if (err) {
            console.log(err);
        } else {
            console.log(data);
        }
    });
    return resp;

};

1 Ответ

1 голос
/ 08 ноября 2019

Вы должны сделать его не асинхронным или вернуть обещание вызывающей стороне (вы можете вернуть это обещание непосредственно во время выполнения). Как это:

const AWS = require('aws-sdk');
AWS.config.update({ region: 'ca-central-1'});

exports.handler = async (event, context, callback) => {

    const ddb = new AWS.DynamoDB({ apiVersion: '2012-10-08'});

    const params = {
        TableName: 'trivia-users',
        Key: {
            name: {
                S: 'Bobas'
            }
        }
    }

    return ddb.getItem(params, null).promise();

};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...