FirebaseArray по убыванию?
С помощью firebaseArray можно ли выполнить заказ по указанному дочернему ключу: (https://www.firebase.com/docs/web/guide/retrieving-data.html#section-queries)?
var fireRef = new Firebase(https://dinosaur-facts.firebaseio.com/dinosaurs);
var query = fireRef.orderByChild("echo").limitToFirst(25);
var todos = $firebaseArray(query);
Однако по умолчанию Firebase извлекает ключи в порядке возрастания.
Далее идут дети с числовым значением, отсортированные в порядке возрастания.
Есть ли способ получить результаты в порядке убывания напрямую из firebaseArray? Например, есть ли у них что-то вроде .reverse()
или .orderBy(desc,...)
?
Ответы
Ответ 1
Это не дает прямого ответа на исходный вопрос, но для любого, кто использует FirebaseUI Java/Android, с RecyclerView
, можно заказать RecyclerView
в обратном порядке, вместо того, чтобы использовать запрос в Firebase:
Пример:
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
layoutManager.setReverseLayout(true);
layoutManager.setStackFromEnd(true);
recyclerView.setLayoutManager(layoutManager)
(Убедитесь, что вы установили оба параметра перед добавлением менеджера компоновки в RecyclerView
)
Проблема Github: https://github.com/firebase/FirebaseUI-Android/issues/90#issuecomment-230643303
Ответ 2
Вот как вы можете заказать по дате. Просто используйте queryOrderedByChild (dateKey)
и он будет в порядке возрастания, чтобы сделать desc, вы можете сделать array.reverse()
POST_REF.queryOrderedByChild(PostKeys.kPostDate).observeEventType(.Value, withBlock: {
snapshot in
var localPosts = [Post]()
for item in snapshot.children {
let postItem = Post(snapshot: item as! FDataSnapshot)
localPosts.append(postItem)
}
//Display at desc order
let reverseResults = localPosts.reverse() as [Post]
completion(postsArray: reverseResults)
}, withCancelBlock: { error in
completion(postsArray: nil)
})