我需要获取我的 firebase 数据库的最后一个孩子

Muh*_*han 6 android firebase firebase-realtime-database

我想从我的 firebase 数据结构中获取最后一个孩子,其中我只知道收到的和第一个孩子的引用 在此处输入图片说明

我试试这个,但它会返回所有的孩子,但我只需要最后一个在查询 limiTolast(1) 中使用的像这样

  DatabaseReference users = mDatabase.child("received");
      //  DatabaseReference receiver = users.child(firebaseUser.getUid());
        final DatabaseReference receiver = 
    users.child("GTjrWgpKjoeXUt4JdBJTYP1JkVT2");

        receiver.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {

                Log.d(TAG, "key count=" + postSnapshot.getKey());

                for (DataSnapshot sender: postSnapshot.getChildren()) {

                    Log.d(TAG, "sender key count=" + sender.getKey());

                }

            }


        }


        @Override
        public void onCancelled(DatabaseError databaseError) {
            Log.e("SHAN " ,databaseError.getMessage());
        }
    });
Run Code Online (Sandbox Code Playgroud)

Fra*_*len 6

如果您知道父节点 ( received/GTjrWgpKjoeXUt4JdBJTYP1JkVT2/fnBOM...)的完整路径,则可以使用以下命令仅获取该位置下的最后一个子节点limitToLast(1)

DatabaseReference ref = users.child("GTjrWgpKjoeXUt4JdBJTYP1JkVT2/fnBOM...`");
ref.orderByKey().limitToLast(1).addChildEventListener(...
Run Code Online (Sandbox Code Playgroud)

如果您不知道父节点的完整路径,则无法检索子节点的子集。


小智 0

您的参考不正确,您的接收器数据库参考应该指向fnBOM.....而不是“GTjrWgpKjoeXUt4JdBJTYP1JkVT2”

       final DatabaseReference receiver = 
       users.child("GTjrWgpKjoeXUt4JdBJTYP1JkVT2").child("fnBom...");
Run Code Online (Sandbox Code Playgroud)

您可以将每个子项存储在数组列表中,并通过以下方式访问数组列表中的最后一个元素

        myArrayList.get(myArrayList.size()-1);
Run Code Online (Sandbox Code Playgroud)