Node.js没有按预期输出

时间:2018-11-25 17:15:30

标签: node.js amazon-web-services aws-lambda

我努力使自己的node.js代码能够按我的意愿运行。 它用于AWS Lambda函数。

代码在DynamoDB中扫描并输出整个表。 问题是我几乎从没有在控制台中输出readdb函数中的console.log(“ DB SCANNED!”)(并且没有值加载到“ 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 :(得分:3)

Lambda完成得太快了,因为您实际上并没有从readdbawait返回任何内容。

您需要返回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();