gpt4 book ai didi

node.js - 读取lambda函数中exports.handler中未执行的dynamodb代码

转载 作者:太空宇宙 更新时间:2023-11-04 03:18:54 24 4
gpt4 key购买 nike

我有一个用 node.js 编写的 lambda 函数,它返回 QRCode 图像。我还尝试从 Dynamodb 读取值。但是,其中的控制台日志似乎没有被执行,这让我认为代码没有被运行。

我怀疑这是由于同步问题造成的。但我不知道该怎么做才能解决它。代码如下:

var qrImage = require('qr-image');
const AWS = require('aws-sdk');
const docClient = new AWS.DynamoDB.DocumentClient({region:'us-west-2'});

exports.handler = async(event, context, callback) => {
var path = event.path;
var drugId = path.replace(/\//g, '');

var params = {
TableName: 'QRCodeInfo',
Key: {
"DrugId" : "1234"
}
};

docClient.get(params, function(err,data) { //does not get executed
if (err) {
console.log(err);
} else {
console.log(data);
}
});

return sendRes(200,drugId); //this works. Image is seen.
};

const sendRes = (status, body) => {
//console.log(body);
const svg_string = qrImage.imageSync(body, { type: 'svg', size: 10 });
var response = {
statusCode: status,
headers: {
"Content-Type": "image/svg+xml"
},
body: svg_string
};
return response;
};

最佳答案

您可能在 dynamodb 调用的回调有机会执行之前退出 lambda。

尝试在 dynamo 调用的回调中、在 console.log 之后调用 callback(null, data) 以及类似的 err 场景,例如回调(错误)

您不能通过调用 return 退出 lambda,您应该调用 callback() (这就是它可用作 lambda 的第三个参数的原因)请参阅 https://docs.aws.amazon.com/lambda/latest/dg/nodejs-prog-model-handler.html#nodejs-prog-model-handler-callback

关于node.js - 读取lambda函数中exports.handler中未执行的dynamodb代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52824443/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com