【问题标题】:How to do order by child inside another child Firebase如何在另一个孩子 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 一起使用而无需订购。

【问题讨论】:

    标签: java android firebase firebase-realtime-database


    【解决方案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"))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-28
        • 2021-03-11
        • 2019-05-01
        相关资源
        最近更新 更多