Я знаю, что на этот вопрос был дан ответ, и ему больше 1 года, но, поскольку в разделе комментариев все еще есть некоторая путаница, я хотел бы добавить некоторую информацию.
Эта проблема
Исходная проблема заключается в том, что OP хочет получить упорядоченный список на основе дочернего ключа из базы данных Firebase в реальном времени, но .orderByChild('arg')
не работает должным образом.
Но то, что не сработало, как ожидалось, - это не .orderByChild('arg')
, а .on("value", callback)
. Потому что .on("value", callback)
работает немного иначе, чем другие типы событий, такие как .on("child_added", callback)
.
Пример
Скажем, у нас есть база данных в реальном времени firebase, как показано ниже:
{
myData: {
-KYNMmYHrzLcL-OVGiTU: {
NO: 1,
image: ...
},
-KYNMwNIz4ObdKJ7AGAL: {
NO: 2,
image: ...
},
-KYNNEDkLpuwqQHSEGhw: {
NO: 3,
image: ...
},
}
}
--
Если мы используем .on("value", callback)
, callback () будет вызываться 1 раз и вернет массив объектов из 3 объектов.
ref.on("value", function(snapshot) {
console.log(snapshot.val());
// Please see Frank van Puffelen's answer
}
![введите описание изображения здесь](https://i.stack.imgur.com/m4ZTi.png)
--
Если мы используем .on("child_added", callback)
, callback () будет вызываться 3 раза, каждый раз возвращает объект, и они возвращаются по порядку.
ref.once("child_added", function(snapshot) {
console.log(snapshot.val());
// The objects are returned in order, do whatever you like
}
![введите описание изображения здесь](https://i.stack.imgur.com/DexHH.png)
Заключение
Если вам нужно получить только упорядоченные данные из firebase (например, для инициализации пользовательского интерфейса). Тогда ref.orderByChild('arg').once("child_added", callback)
вам подходит, он прост и удобен в использовании.
Однако, если по какой-то причине вам нужно использовать ref.orderByChild('arg').on("value", callback)
, см. Ответ Фрэнка ван Пуффелена.
Ссылка
Прочтите документ Firebase для получения дополнительной информации о on(eventType, callback, cancelCallbackOrContext, context)
, их аргументы и их возвращаемые значения.
Еще один полезный документ: Работа со списками данных в Интернете
person
user2875289
schedule
08.12.2016