在Firebase云函数中,可以安全地异步更新文档而无需等待即可返回吗?
P粉043432210
P粉043432210 2023-08-17 14:53:58
0
1
320
<p>在我的Firebase Cloud Function文件中,我有以下的本地函数,它在返回一些属性之前执行了一个文档获取和更新操作。</p> <pre class="brush:php;toolbar:false;">async function getRandomDocLessThanOperator(seed) { try { const db = admin.firestore(); const snapshot = await db.collection("users").where("random", "&lt;=", 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); } }</pre> <p>这个函数工作正常,但我担心在返回之前尝试异步更新文档。然而,在测试中,文档从未没有更新过。但是,这个函数在更新完成之前是否有可能超时?</p> <p>无论如何,为了解决这个问题,我尝试使用<code>await</code>来等待更新:</p> <pre class="brush:php;toolbar:false;">const doc = snapshot.docs[0]; await doc.ref.update({"random": seed}); return doc.get("uid");</pre> <p>然而,当我这样做时,函数返回了预期的字符串,但没有更新文档。</p> <ol> <li>为什么在更新操作前加上<code>await</code>会阻止更新?</li> <li>不等待更新并像第一个示例中那样异步执行是否安全?</li> </ol><p><br /></p>
P粉043432210
P粉043432210

最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!