Firebase数据库查询以获取特定数据

时间:2018-02-20 19:54:39

标签: java android firebase firebase-realtime-database

My Database struckture

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

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

2 个答案:

答案 0 :(得分:1)

Firebase查询firebase query

阅读Firebase实时数据库文档以了解firebase realtime database

获取当前用户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) {

        }
    });

答案 1 :(得分:0)

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

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 );

                    }

PS:如果你想要获得Generated的所有孩子(你将成为所有的孩子),你可以删除你的参考文献中的.child(uid)