Firestore говорит, что у меня есть фильтр неравенства по нескольким свойствам, когда я не - PullRequest
1 голос
/ 28 июня 2019

Я пытаюсь сделать небольшой взлом, чтобы не читать документ пользователя каждый раз при загрузке страницы. Поэтому я сохраняю его локально, каждый раз, когда страница загружается, я получаю локальную версию, получаю свойство updated_at и затем выполняю что-то вроде WHERE last_updated > {{updated_at}}. Для этого я хочу использовать это:

firebase.firestore().collection('User')
.where(firebase.firestore.FieldPath.documentId(), '==', firebase.auth().currentUser.uid)
.where('updated_at', '>', updated_at)
.get()

Как видите, у меня есть одно равенство (==) и одно неравенство (>). Почему я получаю следующую ошибку на консоли:

FirebaseError: Cannot have inequality filters on multiple properties: updated_at
    at new t (https://www.gstatic.com/firebasejs/6.0.2/firebase-firestore.js:1:47054)
    at t.fromRpcStatus (https://www.gstatic.com/firebasejs/6.0.2/firebase-firestore.js:1:116660)
    at t.fromWatchChange (https://www.gstatic.com/firebasejs/6.0.2/firebase-firestore.js:1:125914)
    at t.onMessage (https://www.gstatic.com/firebasejs/6.0.2/firebase-firestore.js:1:242411)
    at https://www.gstatic.com/firebasejs/6.0.2/firebase-firestore.js:1:241212
    at https://www.gstatic.com/firebasejs/6.0.2/firebase-firestore.js:1:241997
    at https://www.gstatic.com/firebasejs/6.0.2/firebase-firestore.js:1:144869

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

Спасибо

1 Ответ

1 голос
/ 28 июня 2019

пожарный здесь

Проверка на равенство, установленная на documentId(), внутренне преобразуется в Firestore в проверку диапазона, потому что ключи сохраняются как последние элементы в существующих индексах (если я правильно понимаю). А это значит, что на стороне сервера вы пытаетесь выполнить две проверки неравенства / диапазона, что недопустимо.

Итак, поведение, которое вы видите, правильное. Но это определенно не интуитивно, и сообщение об ошибке также не полезно. Мы найдем способ улучшить сообщение об ошибке, обнаружив эту комбинацию.

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