[英]AWS lambda async db (Firestore) query, why returns Promise{<pending>}
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>}
表示未解决的promise,但是在代码中, res
最终会是一个值/对象,那为什么还是说unresolved。
3. 我们可以查找哪些不错的参考资料?
谢谢。
伙计们...只需为您的 lambda 分配更多内存。
我在本地尝试了上面的代码,它在0.05s内完成,它在lambda上达到了3s的时间限制,所以我认为这应该是我的承诺的错误。 但实际上promise是正确的,应该是一个pending的promise,因为outside函数一直没有解析。 它很慢,因为它的内存太少(128mb)。 给它更多的内存,错误就会消失。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.