var db = admin.firestore();
exports.handler = async (event) => {
let res = await db.collection(`apps/${event.app_id}/whitelist`).doc(event.ip).set({
ip: event.ip
}).then(() => {
return {
statusCode: 200,
body: {
message: 'success'
}
};
}).catch(() => {
return {
statusCode: 400,
body: {
message: 'failed'
}
};
});
return res;
};
此代码将导致Lambda超时,并且console.log(exports.handler(event))
将打印Promise{<pending>}
。
我的问题是
1. Lambda对于此异步功能有什么期望;它应该返回什么?
2. Promise{<pending>}
表示未解决的承诺,但是在代码中,res
最终将是一个值/对象,这就是为什么它仍然说未解决的原因。
3.我们可以查找哪些不错的参考?
谢谢。
答案 0 :(得分:0)
伙计们...只需为您的lambda分配更多的内存即可。
我在本地尝试了上面的代码,它在0.05s内完成,并且在lambda上达到了3s时间限制,所以我认为这应该是我的诺言的错误。但实际上,该诺言是正确的,并且由于尚未解决外部功能,因此它应该是未决的诺言。由于内存太少(128mb),所以速度很慢。给它更多的内存,错误就会消失。