Node.js 空集合上的Firestore查询速度慢

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

下面是我的firebase函数代码的开始部分。它在不到2秒内到达“oncreate”日志语句。到达“get snapshot”日志语句几乎需要2分钟。邀请集合不存在,它没有文档。为什么在空集合上运行查询要花这么长时间?我该如何加快速度?提前谢谢

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()
混淆。Do
const querySnapshot=await collectionRef.where(“Email”,“snap.id”).get()。2/如果
addUser()
函数是异步的(例如,它写入Firestore),您还应该使用
wait
调用它。