AWS Лямбда NodeJS результат доступа к запросу БД Динамо из внешней функции - PullRequest
0 голосов
/ 20 января 2020

Я пытаюсь запросить таблицу Dynomo DB и хочу go просмотреть полученные элементы в функции в моей AWS Lambda. Я не могу извлечь результат из запроса БД Dynamo. Он находится внутри замыкания, я могу записать его в консоль, но я не могу назначить его для какой-либо переменной в области действия внешней функции. Что я должен сделать, чтобы получить его на улице?

function check(id) {

    //build params
    let params = {
        TableName: 'demo_table',
        KeyConditionExpression: #key =: id,
        Limit: 5,
        ScanIndexForward: false,
        ExpressionAttributeNames: {
            #key: process.env.PRIMARYKEY
        },
        ExpressionAttributeValues: {
            : id: id
        }
    };

    //query ddb
    let result = {};

    ddb.query(params, function(err, data) {
        if (err) {
            console.log("AN ERROR OCCURED\n");
            console.log(err);
        } else {
            //How to copy the data from here to outside??
            //I can console log and see the data
            result = data;
        }

    });
    console.log(result); //returns {}
}


1 Ответ

0 голосов
/ 20 января 2020
const check = async (id) => {

//build params
let params = {
    TableName: 'demo_table',
    KeyConditionExpression: #key =: id,
    Limit: 5,
    ScanIndexForward: false,
    ExpressionAttributeNames: {
        #
        key: process.env.PRIMARYKEY
    },
    ExpressionAttributeValues: {
        : id: id
    }
};



let result = await new Promise((resolve, rejects) => {
    ddb.query(params, function (err, data) {
        if (err) rejects(err)
        resolve(data)
    });
})


console.log(result); //returns {}
}

Используя обещания, вы можете получить данные. чтение базы данных является асинхронной операцией.

...