Node.js не выводится, как ожидалось - PullRequest
0 голосов
/ 25 ноября 2018

Я изо всех сил пытаюсь заставить мой код node.js функционировать так, как я хочу.Он используется для лямбда-функции AWS.

Код Сканирование и вывод всей таблицы в DynamoDB.Проблема в том, что я почти никогда не получаю console.log («DB SCANNED!») В функции readdb, выводимой на консоль (и никакие значения не загружаются в «items»).

var AWS = require('aws-sdk');
AWS.config.update({region: 'eu-west-1'});
var ddb = new AWS.DynamoDB({apiVersion: '2012-10-08'});

var table = "TABLE";

var paramsRead = {
    TableName: table,
  };


exports.handler = async (event) => {

await readdb();
console.log("END");

};


function readdb(){
  ddb.scan(paramsRead, function(err, data) {
    if (err) {
      console.log("Error reading DynamoDB", err);
    } else {
      console.log("DB SCANNED!");
      var items = JSON.stringify(data.Items);
         let response = {
            statusCode: 200,
            body: items,
          };
    }
  }
  );
}

1 Ответ

0 голосов
/ 25 ноября 2018

Лямбда заканчивается слишком быстро, потому что вы на самом деле ничего не возвращаете от readdb до await.

Вам необходимо вернуть Promise

function readdb() {
  return new Promise((resolve, reject) => {
    ddb.scan(paramsRead, (err, data) => {
      if (err) {
        console.log("Error reading DynamoDB", err);
        reject(err);
      } else {
        console.log("DB SCANNED!");
        var items = JSON.stringify(data.Items);
        resolve({
          status code: 200,
          body: items
        });
      }
    })
  });
}

...
const response = await readdb();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...