在Firebase云函数中,可以安全地异步更新文档而无需等待即可返回吗?
P粉043432210
P粉043432210 2023-08-17 14:53:58
[JavaScript讨论组]

在我的Firebase Cloud Function文件中,我有以下的本地函数,它在返回一些属性之前执行了一个文档获取和更新操作。

async function getRandomDocLessThanOperator(seed) {
    try {
        const db = admin.firestore();
        const snapshot = await db.collection("users").where("random", "<=", seed)
                                                     .limit(1)
                                                     .get();
        if (snapshot.empty) {
            return null; // 调用者然后尝试大于操作符
        }
        const doc = snapshot.docs[0];
        doc.ref.update({"random": seed}); // 使用新的种子更新
        return doc.get("uid");
    } catch (error) {
        throw new Error(error);
    }
}

这个函数工作正常,但我担心在返回之前尝试异步更新文档。然而,在测试中,文档从未没有更新过。但是,这个函数在更新完成之前是否有可能超时?

无论如何,为了解决这个问题,我尝试使用await来等待更新:

const doc = snapshot.docs[0];
await doc.ref.update({"random": seed});
return doc.get("uid");

然而,当我这样做时,函数返回了预期的字符串,但没有更新文档。

  1. 为什么在更新操作前加上await会阻止更新?
  2. 不等待更新并像第一个示例中那样异步执行是否安全?


P粉043432210
P粉043432210

全部回复(0)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号