Node.js 空集合上的Firestore查询速度慢
下面是我的firebase函数代码的开始部分。它在不到2秒内到达“oncreate”日志语句。到达“get snapshot”日志语句几乎需要2分钟。邀请集合不存在,它没有文档。为什么在空集合上运行查询要花这么长时间?我该如何加快速度?提前谢谢Node.js 空集合上的Firestore查询速度慢,node.js,firebase,google-cloud-firestore,google-cloud-functions,Node.js,Firebase,Google Cloud Firestore,Google Cloud Functions,下面是我的firebase函数代码的开始部分。它在不到2秒内到达“oncreate”日志语句。到达“get snapshot”日志语句几乎需要2分钟。邀请集合不存在,它没有文档。为什么在空集合上运行查询要花这么长时间?我该如何加快速度?提前谢谢 exports.register = functions.firestore.document("Users/{Email}").onCreate( async (snap, context) => { // see if
exports.register = functions.firestore.document("Users/{Email}").onCreate(
async (snap, context) => {
// see if Invitation exists, if yes get FamilyId from there
const collectionRef = admin.firestore().collection("Invitations");
functions.logger.info("oncreate", {structuredData: true});
collectionRef.where("Email", "==", snap.id)
.get().then((querySnapshot) => {
functions.logger.info("got snapshot", {structuredData: true});
if (querySnapshot.empty) {
addUser(snap);
return;
} ....
由于您正在云函数代码中执行异步操作,因此需要从代码的顶层返回一个承诺,以便云函数容器知道它可以运行多长时间 从您共享的代码中,这意味着您需要在此处添加一个
return
:
return collectionRef.where("Email", "==", snap.id)
...
我建议您查看上的Firebase文档,其中详细介绍了如何处理异步调用。除了Frank的anwser之外,我还想补充一点:1/您最好不要将
async
与then()
混淆。Doconst querySnapshot=await collectionRef.where(“Email”,“snap.id”).get()代码>。2/如果addUser()
函数是异步的(例如,它写入Firestore),您还应该使用wait
调用它。