首页 > 解决方案 > Firebase/Firestore 找不到匹配的索引,但没有创建索引的选项

问题描述

我正在尝试在我的应用程序中运行一个 Firestore 查询,该查询引发了一个索引丢失的错误。Firestore 过去总是包含一个链接,用于单击控制台以创建丢失的索引,但这次它不存在,所以我被卡住了!不知道这次我做了什么不同的事情。

这是控制台错误:

prebuilt-d16b955d-cdb9e87f.js:188 Uncaught (in promise) FirebaseError: no matching index found.
at new e (prebuilt-d16b955d-cdb9e87f.js:188)
at prebuilt-d16b955d-cdb9e87f.js:10416
at prebuilt-d16b955d-cdb9e87f.js:10414
at e.onMessage (prebuilt-d16b955d-cdb9e87f.js:10403)
at prebuilt-d16b955d-cdb9e87f.js:10356
at prebuilt-d16b955d-cdb9e87f.js:10387
at prebuilt-d16b955d-cdb9e87f.js:15180

这是我的 JS 函数:

loadcatalogues() {
      console.log(this.clubID);
      this.showspinner = true;
      this.catalogues = [];
      var today = moment().utc().unix();
      let self = this;
      fb.catalogueCollection
        .where("clubID", "==", this.clubID)
        .where("expiry", ">", today)
        .orderBy("expiry", "asc")
        .orderBy("price", "asc")
        .get()
        .then(function (querySnapshot) {
          querySnapshot.forEach(function (doc) {
            if (
              doc.data().members &&
              doc.data().members.indexOf(self.userProfile.id) !== -1
            ) {
              return false;
            }
            var starttime = moment.unix(doc.data().start).utc();
            var endtime = moment.unix(doc.data().expiry).utc();
            var tempdata = {
              title: doc.data().title,
              description: doc.data().description,
              start: starttime.format("DD-MM-YYYY"),
              expiry: endtime.format("DD-MM-YYYY"),
              price: doc.data().price,
              purchased: false,
              stripeid: doc.data().stripeid,
              catalogueid: doc.id,
              limited: doc.data().limited,
            };
            self.catalogues.push(tempdata);
          });
          if (self.catalogues.length == 0) {
            self.shownooptions = true;
          }
          self.showspinner = false;
        });
    },

如果我删除第一个 where 子句 (.where("clubID", "==", this.clubID)) 那么查询运行良好,所以我猜测该查询已经存在索引。我最近才添加了 clubID 字段,那会不会缺少索引?

谢谢!!

标签: firebasevue.jsindexinggoogle-cloud-firestore

解决方案


Google Firestore 目前似乎存在问题。打了一个支持电话,他们已经确认他们已经收到了其他几份报告,他们的工程团队正在调查。


推荐阅读