Мне трудно понять, почему этот простой запрос не дает ожидаемых результатов.
В моей базе данных Firebase в реальном времени моя структура выглядит следующим образом:
Довольно просто, верно? Затем у меня есть облачная функция, которая запускается всякий раз, когда я вручную изменяю одно из значений orbs
для любого из пользователей. Это моя функция:
exports.testTopPlayers2 = functions.database.ref('/TestUsers/{user}/Statistics').onUpdate(_ => {
const allPlayersRef = admin.database().ref('/TestUsers');
const query = allPlayersRef.orderByChild('orbs').limitToLast(2)
return query.on('value', (snap, context) => {
return console.log(snap.val());
})
Также очень проста, я думаю. В обычном engli sh я ожидаю, что эта функция будет выполнять следующее: «При изменении любого из значений orbs
запустите эту функцию, чтобы отсортировать всех пользователей по значению их шаров (от низшего к наибольшему) и принять новый DataSnapshot только данных последних 2 пользователей (пользователей с наибольшим числом шаров) ".
Когда я печатаю на консоль, я ожидаю увидеть данные из User3
& User6
потому что у них наибольшее количество шаров ... но вместо этого, похоже, сортировка по имени пользователя (User5
& User6
) или просто не сортировка вообще. Вот вывод журнала:
, который явно не сортируется по тому, что я определяю в своем запросе.
Может быть, я Я упускаю что-то очевидное, но я достаточно долго на это смотрю ... надеюсь, что кто-то обнаружит ошибку в моей функции в отношении того, как она сортируется.
Я ценю помощь!