繁体   English   中英

AWS lambda async db (Firestore) 查询,为什么返回 Promise{<pending> }

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM