Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从Firebase检索多个子节点的数据_Java_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Java 从Firebase检索多个子节点的数据

Java 从Firebase检索多个子节点的数据,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我正在开发一个应用程序,我只想显示手机中储存了联系人号码的用户的数据。因此,我检索了一个联系人号码列表contactList。现在,我想从Firebase获取所有联系人列表用户帖子。我有没有办法只向Firebase询问我的联系人列表中的那些节点。一种方法是检索所有用户,然后从中获取相关用户(就像我下面所做的那样)。有没有更好的办法 Users: { 7828272892 : { name: xyz,

我正在开发一个应用程序,我只想显示手机中储存了联系人号码的用户的数据。因此,我检索了一个联系人号码列表
contactList
。现在,我想从Firebase获取所有
联系人列表
用户帖子。我有没有办法只向Firebase询问我的
联系人列表中的那些节点
。一种方法是检索所有用户,然后从中获取相关用户(就像我下面所做的那样)。有没有更好的办法

Users: { 
            7828272892 : {
                 name: xyz, 
                 gender: male,
                 phoneNo: 7828272892
                 Posts: {
                     SomeKey1: {
                         content: "This is post 1", Var2: "kkk"} }},
            7924272894 : {name: abc, gender: male, phoneNo: 7924272894} 
        }
代码:

databaseReference.child(“用户”).addListenerForSingleValueEvent(新的ValueEventListener()){
@凌驾
公共无效onDataChange(数据快照快照){
List allItems=new ArrayList();
对于(DataSnapshot postSnapshot:snapshot.getChildren()){
if(contactList.contains(postsnashot.child(“phoneNo”).getValue()){
//取回帖子
}
}
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
}
});
我有没有办法只向firebase询问我的
联系人列表中的那些节点

是的,你已经这样做了

有没有更好的办法


这样做的方式是Firebase中常用的做法。您可以查询数据库并检查列表中是否已经存在数据,您的情况是在
联系人列表中。如果列表包含
phoneNo
,则可以检索帖子。

尝试使用此代码读取多个节点数据

 mFirebaseInstance = FirebaseDatabase.getInstance();
    mDatabase = mFirebaseInstance.getReference("usersDb/UserTable");
    mDatabase.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            mUserList.clear();
            for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
                User user = dataSnapshot1.getValue(User.class);
                mUserList.add(user); // add all data into list.
            }
            }


        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
 mFirebaseInstance = FirebaseDatabase.getInstance();
    mDatabase = mFirebaseInstance.getReference("usersDb/UserTable");
    mDatabase.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            mUserList.clear();
            for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
                User user = dataSnapshot1.getValue(User.class);
                mUserList.add(user); // add all data into list.
            }
            }


        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });