【发布时间】:2020-12-11 20:47:36
【问题描述】:
我在为 AWS 中的 API 网关编写 lambda 函数时遇到问题。我不知道为什么有些 dynamoDB 方法会运行两次。这似乎是对 async/await 技术的一些错误使用。它甚至发生在 SQS 或 SNS 方法中。
这是我的功能:
const orderPut = async (orderID: string, status:BasicOrderStatus): Promise<APIGatewayProxyResult> => {
let response: APIGatewayProxyResult; // Init variables
try {
...
console.log("blabla"); // THIS LOG APPEARS JUST ONCE IN CONSOLE
let params = {...;
await docClient.update(params, function (err, data) {
if (err) {
console.error("Unable to update order status. Error: ", JSON.stringify(err, null, 2));
} else {
console.log("Update Order Status succeeded: ", JSON.stringify(data, null, 2)); // THIS LOGS APPEARS TWICE IN CONSOLE
}
}).promise();
response = createSuccessResponse() // Creates successful response
} catch (e) {
response = createErrorResponse(e) // creates error response
}
return Promise.resolve(response) }
我检查了一下,确定不是我的 lambda 函数执行了两次。例如,我可以看到我的日志在控制台上只出现了一次,但来自 dynamoDB 方法的日志出现了两次。
它发生在所有 muy 函数中,但不是在每个 dynamoDB 方法中发生,或者不是每次都发生。超级奇怪,不明白为什么。
我正在使用 Nodejs
有什么帮助吗?提前非常感谢!
【问题讨论】:
标签: node.js amazon-web-services async-await