Асинхронный код для извлечения документов из Dynamodb никогда не выполняется - PullRequest
0 голосов
/ 22 июня 2019

Код, который должен быть выполнен после завершения работы DynamoDB, никогда не выполняется.

Несмотря на то, что я использую встроенное обещание сканирования, ожидание не ожидает завершения сканирования. Даже если вручную добавить дополнительную команду await, она не будет выполнена.

    var AWS = require("aws-sdk");
    AWS.config.update({
          region: "us-west-2",
          endpoint: "http://localhost:8000"
        });
    var docClient = new AWS.DynamoDB.DocumentClient(); 
        var params = {
                TableName : "residenciaLN",            
            };


    exports.handler = async (event) => {
        console.log("Querying...");

        const load = async () => {
            console.log("Got in...");
            const { Items } = await docClient.scan(params).promise();
            const item = Items[0];
            console.log('Items: ' + item);
            return;
        };
        await load;   // no effect on this line being here or not
        console.log("Exiting...");   
        return 
    }; 

    Actual result:
    INFO    Querying...
    INFO    Exiting...

    Expected result: 
    INFO    Querying...
    INFO    Got in...
    INFO    Items: XXXXXX
    INFO    Exiting...

Ответы [ 2 ]

1 голос
/ 22 июня 2019

load - это функция. Чтобы вызвать вызов функции, вы должны использовать скобки после него.

Чтобы это работало, измените эту строку:

await load;

К этому:

await load();
0 голосов
/ 22 июня 2019

вам нужно вызвать load как функцию await load() вместо await load

exports.handler = async (event) => {
    console.log("Querying...");

    const load = async () => {
        console.log("Got in...");
        const { Items } = await docClient.scan(params).promise();
        const item = Items[0];
        console.log('Items: ' + item);
        return;
    };
    await load();   // instead of [await load]
    console.log("Exiting...");   
    return 
}; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...