Сортировать по неравенству с лимитом на Firestore - PullRequest
1 голос
/ 16 мая 2019

Предполагая, что я получил следующий простой запрос с , где и orderBy и limit , который вернет мне публичный профиль (следовательно, где ), который был недавно обновлен (следовательно, orderBy ).

db.collection('profile')
   .where('public_profile', '==', true)
   .orderBy('updated_at', 'desc')
   .limit(1)
   .onSnapshot(function(doc) {
        ...
   });

Теперь я хочу добавить дополнительную логику, означающую, что я хочу отображать только те профили, которые находятся ниже какого-то уровня. Когда я делаю следующее:

db.collection('profile')
   .where('public_profile', '==', true)
   .orderBy('updated_at', 'desc')
   .where('level', '<=', 5)
   .limit(1)
   .onSnapshot(function(doc) {
        ...
   });

Я получаю ошибку:

Неверный запрос. У вас есть фильтр where с неравенством (lessThan, lessThanOrEqual, moreThan или moreThanOrEqual) в поле «talent.level», и поэтому вы должны также использовать «уровень» в качестве первого поле queryOrderedBy, но ваш первый queryOrderedBy в данный момент включен вместо поля 'updated_at'.

Как я понимаю, мне нужно добавить дополнительный orderBy , давая мне следующее:

db.collection('profile')
   .where('public_profile', '==', true)
   .where('level', '<=', 5)
   .orderBy('level', 'desc')
   .orderBy('updated_at', 'desc')
   .limit(1)
   .onSnapshot(function(doc) {
        ...
   });

Однако это приводит к неверному результату: он не возвращает последний обновленный общедоступный профиль, уровень которого ниже или равен 5. Он возвращает мне самый последний обновленный общедоступный профиль профиля с самый высокий уровень.

Кто-нибудь из вас нашел подобную проблему? Если да, каково было ваше решение?

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