如何在另一个孩子 Firebase 中按孩子订购

Posted

技术标签:

【中文标题】如何在另一个孩子 Firebase 中按孩子订购【英文标题】:How to do order by child inside another child Firebase 【发布时间】:2018-09-01 21:01:43 【问题描述】:

我正在尝试按另一个孩子内部的孩子值获取所有按升序和降序排列的数据。在主要课程范围内:

FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference dbRef = database.getReference("university");

我有这样的数据结构


"university": 
    "13": 
      "name": "value"
      "exam": 
        "exam_date": "value"
        "reg_date": "value"
      
    
    "15": 
      "name": "value"
      "exam": 
        "exam_date": "value"
        "reg_date": "value"
      
    
    "20": 
      "name": "value"
      "exam": 
        "exam_date": "value"
        "reg_date": "value"
      
    

首先我尝试这种方式Query q=dbRef.orderByChild("13/exam/exam_date") 但它正在获取数据,就像我直接将 ValueEventListener 与 dbRef 一起使用而无需订购。

【问题讨论】:

【参考方案1】:

要解决这个问题,请更改以下代码行:

Query q=dbRef.orderByChild("13/exam/exam_date")

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
Query query = rootRef.child("university").orderByChild("exam/exam_date");

【讨论】:

谢谢,一切正常,我只需将 Query q=dbRef.orderByChild("13/exam/exam_date") 更改为 Query q=dbRef.orderByChild("exam/exam_date");【参考方案2】:
 firebaseDatabaseRef.child(AppConstants.RootNode.userRoomGroupIds).child(myUserId).orderByChild(AppConstants.FireBaseRoom.LAST_MESSAGE+"/"+AppConstants.LASTMESSAGE.MESSAGE_TIME_STAMP).startAt(System.currentTimeMillis());

这个查询给出了我当前 milisec 旁边的数据,所以我使用 orderByChild 来引用特定的子 /lastmessage/timeStamp

【讨论】:

【参考方案3】:

现在,我使用 orderBy(FieldPath) 来执行此操作

Query q=dbRef.orderBy(FieldPath.of("13", "exam", "exam_date"))

【讨论】:

以上是关于如何在另一个孩子 Firebase 中按孩子订购的主要内容,如果未能解决你的问题,请参考以下文章

我无法在 Firebase 中获得孩子的钥匙

SQLAlchemy如何在多对多中按孩子过滤

Firebase如何显示孩子未知ID的特定孩子

Firebase 安全规则检查孩子的唯一值#AskFirebase

如何从孩子(firebase)查询所有孩子的值[重复]

Firebase 实时规则