代码之家  ›  专栏  ›  技术社区  ›  Modgo

如何在另一个子Firebase中按子级排序

  •  3
  • Modgo  · 技术社区  · 8 年前

    我正在尝试按另一个子元素中的子元素值获取所有按asc和desc排序的数据。在类别的主要范围内:

    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一起使用,而不需要排序。

    3 回复  |  直到 8 年前
        1
  •  9
  •   Alex Mamo    8 年前

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

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

    具有

    DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
    Query query = rootRef.child("university").orderByChild("exam/exam_date");
    
        2
  •  0
  •   Dishant Kawatra    7 年前
     firebaseDatabaseRef.child(AppConstants.RootNode.userRoomGroupIds).child(myUserId).orderByChild(AppConstants.FireBaseRoom.LAST_MESSAGE+"/"+AppConstants.LASTMESSAGE.MESSAGE_TIME_STAMP).startAt(System.currentTimeMillis());
    

    这个查询提供了我当前milisec旁边的数据,所以我使用orderByChild,其中引用了特定的child/lastmessage/timeStamp

        3
  •  0
  •   Tink    4 年前

    现在,我使用orderBy(FieldPath)来完成此操作

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