Firebase数据库按未知节点的时间排序

问题描述 投票:0回答:1

我试图按时间顺序检索以下内容:

其中已知值是经过身份验证的用户的当前令牌,但未知值是之前已从服务器环境创建的用户。

    mDatabase = FirebaseDatabase.getInstance().getReference("users");

    mDatabase.child("users").child(user.getUid());

    mDatabase.child(user.getUid()).addValueEventListener(new ValueEventListener() {

        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {


            GenericTypeIndicator<Map<String, Object>> t = new GenericTypeIndicator<Map<String, Object>>() {
            };
            Map<String, Object> map = dataSnapshot.getValue(t);

            assert map != null;


            for (Object e : map.values()) {
                list.add(e.toString());
            }

            for (Object e : map.keySet()) {
                list1.add(e.toString());
            }

我试图在addValueEventListener上使用orderByChild(“time”),但我不认为它工作,因为我无法指出数据库中的正确位置,因为我无法获得用户的值

编辑:

            try {
                for (int i = list1.size()-1; i == list1.size()-1; i++) {

                    String guestname = String.valueOf(dataSnapshot.child(list1.get(i)).child("username").getValue());
                    String guestemail = String.valueOf(dataSnapshot.child(list1.get(i)).child("email").getValue());
                    String guestpassword = String.valueOf(dataSnapshot.child(list1.get(i)).child("password").getValue());

                    Log.w(TAG, "Name of newest value is " + guestname);
                    Log.w(TAG, "Email of newest value is " + guestemail);
                    Log.w(TAG, "Password of newest value is " + guestpassword);
                    guestname1 = guestname;
                    guestpassword1 = guestpassword;
                    guestemail1 = guestemail;
                }
android firebase firebase-realtime-database
1个回答
0
投票

你会想要使用orderByChild()

mDatabase = FirebaseDatabase.getInstance().getReference("users");

Query query = mDatabase.child(user.getUid()).orderByChild("time")

query.addValueEventListener(new ValueEventListener() {
  @Override
  public void onDataChange(DataSnapshot dataSnapshot) {
    for (dataSnapshot childNode: dataSnapshot.getChildren()) {
      System.out.printl(childNode.getKey()); //this is the unknown key you marked
      System.out.printl(childNode.child("time").getValue(Long.class));
    }
  }

  ...
© www.soinside.com 2019 - 2024. All rights reserved.