AWS Lambda中的BluebirdJS bind()

时间:2017-01-12 22:56:15

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

我在node.js AWS lambda函数中有一些奇怪的行为。在我当地的环境中,我使用bluebirdjs来处理我的承诺。我本来是" promisifying" aws-sdk我自己但之后发现了这篇文章https://aws.amazon.com/blogs/developer/support-for-promises-in-the-sdk/并将其转换为使用" promise版本" aws-sdk方法。

基本上,当我尝试使用bluebird(http://bluebirdjs.com/docs/api/promise.bind.html)的bind方法通过promise链传递数据时,我的问题就出现了。这适用于我的本地环境和测试。然而,当我部署到lambda时,我总是会收到错误说" stack:' TypeError:无法设置属性\' property \'未定义\ n"在我看来,这就是"这个"在promise.then()中没有定义回调。有没有人知道为什么.bind()可以在我的本地机器上运行而不在AWS Lambda中运行?我正在运行相同版本的节点。

这就是我正在做的事情

let s3getObjectPromise = s3.getObject({Bucket: bucket, Key: file}).promise();
s3getObjectPromise
    .bind({})
    .then((data) => {
        this.test = 'test';
        return parsePOICSV(data, type)
    })
    .then(function(recordsToUpdate) {
        let test = this.test; // THROWS ERROR
        // pass recordsToUpdate down the promise chain
        let searchRequests = elasticSearchService.constructQuery(recordsToUpdate);
        return elasticSearchService.search(searchRequests, recordsToUpdate);
    })

0 个答案:

没有答案