FireStore Несколько где запрос - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть следующий запрос пожарного магазина ниже. Я пытаюсь выполнить несколько где запрос по книжной коллекции. Я хочу фильтровать по названию книги и возрасту книги. Однако я получаю следующую ошибку

"необработанная ошибка в onsnapshot firebaseError: позиция курсора находится вне диапазона исходного запроса", может кто-то, пожалуйста, посоветуйте.

           const collectionRef = firebase.firestore().collection('Books')

           collectionRef.where('d.details.BookType',"==",BookType)
           collectionRef = collectionRef.where('d.details.bookage',"<=",age)
           collectionRef = collectionRef.orderBy('d.details.bookage')


             const geoFirestore = new GeoFirestore(collectionRef)

              const geoQuery = geoFirestore.query({
              center: new firebase.firestore.GeoPoint(lat, long),
              radius: val,

              });

            geoQuery.on("key_entered",function(key, coords, distance) {   

storeCoordinate(key,coords.coordinates._lat,coords.coordinates._long,newdata)
});

1 Ответ

0 голосов
/ 06 ноября 2018

Внутренне GeoFirestore получает свои результаты по this._query.orderBy('g').startAt(query[0]).endAt(query[1])

Выкладывая это последовательно, расширяя ваше collectionRef, происходит нечто подобное:

const collectionRef = firebase.firestore().collection('Books')
collectionRef.where('d.details.BookType',"==",BookType)
collectionRef = collectionRef.where('d.details.bookage',"<=",age)
collectionRef = collectionRef.orderBy('d.details.bookage')
collectionRef.orderBy('g').startAt(query[0]).endAt(query[1])

Проблема возникает из-за того, что .startAt относится к вашему первому orderBy, который равен d.details.bookage, поэтому он начинает с курсора, где d.details.bookage равен query[0]. * * 1017

Видя, что query[0] является геохэшем, он переводится в нечто вроде , начиная с курсора, где d.details.bookage равно w2838p5j0smt, отсюда и ошибка.


Решение

Есть два способа обойти это ограничение.

  1. Ждите обновления Geofirestore, над которым, я думаю, @MichaelSolati уже работает.
  2. Сортировка результатов после получения результатов из Geofirestore's onKey
...