Firebase Giving Ошибка предварительного условия - PullRequest
1 голос
/ 27 января 2020

Получаю ошибку ff с кодом ff: Ошибка:

{"code":"failed-precondition","name":"FirebaseError","__zone_symbol__currentTask":{"type":"macroTask","state":"notScheduled","source":"setTimeout","zone":"angular","cancelFn":null,"runCount":0}}

Мой код:

getOldPosts(forum_id: string, user_id: string, start_key?: string): Promise<Posts[]> {
    return new Promise((resolve, reject) => {
      let olderPosts: Posts[] = [];
      let _5daysAgo = this.dateTime.getFiveDaysAgoDate();

      const postsRef = this.afirestore.collection<Posts>('posts').ref;
      const query = start_key == undefined || start_key == null
        ? postsRef.where('createdDate', '<=', _5daysAgo).where('forumId', '==', forum_id).where('memberId', '==', user_id)
        : postsRef.where('createdDate', '<=', _5daysAgo).where('forumId', '==', forum_id).where('memberId', '==', user_id).startAt(start_key).limit(50);

      query.get().then(
        res => {
          res.docs.forEach(doc => {
            olderPosts.push(doc.data() as ForumPosts);
          });
          resolve(olderPosts.reverse());
        },
        err => {
          reject(err);
        }
      );
    });
  }

Кажется, я не могу понять, почему это происходит. Я пытался найти в Google, но я не могу найти решение. Что я делаю не так?

Спасибо.

1 Ответ

1 голос
/ 27 января 2020

Согласно документации Firestore в Управление индексами страница

Если вы попытаетесь составной запрос с предложением диапазона, который не сопоставляется с существующим индексом, вы получите ошибка.

Вы можете использовать веб-консоль Firebase Firestore для создания индексов вручную для вашего запроса.

В противном случае просто запустите запрос, и он выдаст ошибку с URL-адресом для консоль Firestore, где вы получите возможность автоматически создавать этот составной индекс.

postsRef.where('createdDate', '<=', _5daysAgo).where('forumId', '==', forum_id).where('memberId', '==', user_id)

Блок кода выглядит как преступник, поскольку в нем есть предложение равенства в сочетании с предложением диапазона.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...