firebaseArray 降序?

Posted

技术标签:

【中文标题】firebaseArray 降序?【英文标题】:firebaseArray descending order? 【发布时间】:2015-07-08 01:45:42 【问题描述】:

使用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, ...) 之类的东西?

【问题讨论】:

Display posts in descending posted order的可能重复 我看到了,但这是一个复杂的解决方案。他们有什么 .reverse() 或 .orderBy(desc, ...) 吗? 免责声明:我为 Firebase 工作 不。我们知道这样的添加会很有用,但它目前不存在。在某些情况下,您可以反转您的值以获得相同的结果(即-1 * timestamp)。但这取决于您存储的值的类型。 @FrankvanPuffelen 好主意。这解决了我的问题。谢谢! 有 -1 * 时间戳的例子吗?这对 Firebase 来说是一个非常有用的功能 【参考方案1】:

这并不能直接回答最初的问题,但对于使用 FirebaseUI Java/androidRecyclerView 的任何人,可以反向订购 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

【讨论】:

这正是我想要的!非常感谢! 非常感谢朋友,这正是我需要的 非常感谢艾伦,正是我想要的。与尝试实际重新排序 firebase 数据库相比,此代码是否更有效? 我没有看到任何文档建议反转布局管理器会影响 android 的性能。无论如何,性能并没有降低我的情况。它还让我免于处理更多的 firebase 查询和时间戳 ?【参考方案2】:

这是按日期订购的方法。只需使用 queryOrderedByChild(dateKey) 它将按 asc 顺序排列,要使 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)
)

【讨论】:

以上是关于firebaseArray 降序?的主要内容,如果未能解决你的问题,请参考以下文章

解决返回 $firebaseArray 时需要先返回 $firebaseObject 服务?

Firebase 按降序对数据进行排序。 (只排序了一半。)

Swift - 如何在 Firebase 上将排序查询创建为降序?

firebase 和 Ionic 2 上的降序 orderByChild()

如何在 Firebase 中按降序排列数据 - Python

按降序过滤时向 Firebase 观察者添加新帖子