在try块结束db调用之前,最终块运行



我正在数据库上执行输入操作,并试图返回响应。

var response = {}
try {
db.put({},(err, data) => {
if(err) {
response["message"] = err.message
response["code"] = 400
} else {
response["message"] = "Group created"
response["code"] = 201
response["body"] = data.Item   
}
})
} catch (error) {
response['message'] = "Something went wrong"
response['code'] = 500
} finally {
return response
}

此代码在成功时返回null对象,而当我尝试在数据库调用后设置超时时,它返回了完全响应。我认为在不等待数据库调用响应的情况下,最终阻止了运行。

是的,如果db.put是异步的,这是有意义的。

对于DynamoDB来说,看起来你可以返回一个Promise。然后你可以使用等待来等待响应,以便返回它

它会变成这样:

const func = async() => {
const response = {}
try {
try {
const rv = await db.put({}).promise();
response["message"] = "Group created"
response["code"] = 201;
response["body"] = rv.data.Item;
} catch (err) {
response["message"] = err.message;
response["code"] = 400;
}
} catch (error) {
response['message'] = "Something went wrong";
response['code'] = 500;
} finally {
return response;
}
}
func().then((val) => console.log(val));

最新更新