【问题标题】:AWS Lambda using node.js not executing promise function使用 node.js 的 AWS Lambda 不执行承诺函数
【发布时间】:2018-12-08 10:05:01
【问题描述】:

我用两个 console.log 调用创建了这个简单的函数。日志中显示“创建承诺后”,而没有出现“扫描承诺执行”。我是 node.js 的新手。我的错在哪里?

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

    var AWS = require("aws-sdk");

    AWS.config.update({
        region: "us-east-1",
        endpoint: "https://dynamodb.us-east-1.amazonaws.com"
    });

    var docClient = new AWS.DynamoDB.DocumentClient();



    var params = {
        TableName: "User",
        KeyConditionExpression: null,
        FilterExpression: 'CusomerId = :customerid',

    };



    var scanPromise=docClient.scan(params).promise();
    console.log('\r\nAfter promise created');
    scanPromise.then(function(err,data)
    {
         console.log('\r\nScan promise executed');

    });
};

【问题讨论】:

  • 您是否尝试过从函数返回scanPromise。例如return scanPromise.then(.....)
  • 好的,这确实会导致承诺执行。尽管它会导致日志中的 dynamodb 访问失败,而不会在我的代码中点击 console.log 行。如果您在答案中输入此内容,我可以标记为已回答。
  • 我将其添加为答案...

标签: node.js aws-lambda


【解决方案1】:

您的handler 是一个异步函数。如果您不返回承诺,则处理程序将被执行,但它会立即退出,而无需等待您的承诺完成。

改成return scanPromise.then(...)

【讨论】:

  • 我有类似的问题,但这对我不起作用。我已经完全按照你的建议写了,并在这里发布了一个问题:stackoverflow.com/questions/55518992/…你能提供任何反馈吗?
猜你喜欢
  • 1970-01-01
  • 2018-07-17
  • 2016-08-25
  • 1970-01-01
  • 2019-11-16
  • 2016-10-16
  • 2021-09-19
  • 1970-01-01
  • 2017-06-24
相关资源
最近更新 更多