Reputation: 8536
Using firebaseArray, is it possible to order by a specified child key: (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);
However, by default, Firebase retrieves the keys in ascending order.
Children with a numeric value come next, sorted in ascending order.
Is there any way to get results in the descending order directly from firebaseArray? For example, do they have anything like .reverse()
or .orderBy(desc, ...)
?
Upvotes: 12
Views: 13825
Reputation: 1700
This doesn't directly answer the original question, but for anyone using FirebaseUI Java/Android, with a RecyclerView
, it's possible to order the RecyclerView
in reverse, rather than using a query on Firebase:
Example:
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
layoutManager.setReverseLayout(true);
layoutManager.setStackFromEnd(true);
recyclerView.setLayoutManager(layoutManager)
(Ensuring you set both before adding the layout manager to the RecyclerView
also)
Github issue: https://github.com/firebase/FirebaseUI-Android/issues/90#issuecomment-230643303
Upvotes: 14
Reputation: 3006
Here is how you can order by date. Just use queryOrderedByChild(dateKey) and it will be in asc order, to make desc you can do 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)
})
Upvotes: 1