Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.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,这是我在Firebase中的数据库,我正在开发一个Android应用程序。现在,我想从“生成的”节点检索所有数据,其中当前用户的userid与数据中的“userid”匹配 我想知道Firebase中用于获取特定数据的查询。要访问该引用中的每个项目,您需要以下内容: mDatabase.child("Leads").child("Generated").child(uid).addValueEventListener(new ValueEventListener() {

这是我在Firebase中的数据库,我正在开发一个Android应用程序。现在,我想从“生成的”节点检索所有数据,其中当前用户的userid与数据中的“userid”匹配


我想知道Firebase中用于获取特定数据的查询。

要访问该引用中的每个项目,您需要以下内容:

mDatabase.child("Leads").child("Generated").child(uid).addValueEventListener(new ValueEventListener() {
                final List<String> lstItems= new ArrayList<String>();

                @Override
                public void onDataChange(final DataSnapshot dataSnapshot) {

                    for(DataSnapshot ds : dataSnapshot.getChildren()) {
                        String name = (String) ds.getKey();
                        String values = (String) ds.getValue();
                        Log.e("Values",""+values );
                        lstItems.add(values );

                    }
mDatabase.child(“Leads”).child(“Generated”).child(uid).addValueEventListener(新的ValueEventListener()){
最终列表项=新的ArrayList();
@凌驾
公共无效onDataChange(最终数据快照数据快照){
对于(DataSnapshot ds:DataSnapshot.getChildren()){
字符串名称=(字符串)ds.getKey();
字符串值=(字符串)ds.getValue();
Log.e(“值”和“+”值);
添加(值);
}
PS:如果要获取生成的所有子项(将是所有uid),可以删除引用中的
.child(uid)

阅读Firebase实时数据库文档了解一些信息

获取当前用户Uid的步骤

    FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
    String current_uid = user.getUid(); // user.getUid() will return null if you are not log in
    DatabaseReference db = FirebaseDatabase.getInstance().getReference();

    Query query = db.child("Leads").child("Generated").orderByChild("userid").equalTo(current_uid);
    query.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

                      // do something

            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
或者试试这个

db.child("Leads").child("Generated").addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if (dataSnapshot.exists())
            {
                for (DataSnapshot ds: dataSnapshot.getChildren())
                {
                    SomeClass someClass = ds.getValue(SomeClass.class);
                    if(someClass.getUid().equals("uid")){
                        // i don't if it is the best practice or not but you can do with this as well
                    }
                }
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

OPs问题在JSON中没有
子(uid)
层,因此您的侦听器不会有任何结果。对于当前的JSON模型,这需要一个查询,例如Salman500的答案使用的查询。只有当我手动获取UserUID时(从Firebase控制台复制并粘贴到“.equalsTo”。如果我在“.equalsTo”中获取当前的uid,代码才起作用它没有给出任何结果。我甚至检查了当前的uid值。它给出了正确的当前用户的uid。