在Android上执行firebase查询

时间:2017-12-16 06:36:38

标签: java android firebase firebase-realtime-database

所以,我想要对数据进行搜索,以便返回与搜索匹配的用户列表(有点像Facebook或Twitter的搜索方式)所以我有几个问题,因为这很难在网上找到。首先,用户将数据输入SearchView。我设置了onQueryTextListener,并在用户点击提交后搜索Firebase数据库。要检索以输入的字符串开头的所有数据的查询,我有这个代码(我知道它可能完全错误):

FirebaseDatabase.getInstance().getReference().child("uploads").addChildEventListener(new ChildEventListener() {
                @Override
                public void onChildAdded(DataSnapshot dataSnapshot, String s) {

                    Query query = FirebaseDatabase.getInstance().getReference().orderByChild("username").startAt(s);
                }

                @Override
                public void onChildChanged(DataSnapshot dataSnapshot, String s) {

                }

                @Override
                public void onChildRemoved(DataSnapshot dataSnapshot) {

                }

                @Override
                public void onChildMoved(DataSnapshot dataSnapshot, String s) {

                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });

我的第一个问题是:这是检索具有与指定搜索匹配的用户名的所有用户的好方法吗?这就是我的数据库结构为:Firebase database

如果这是正确的,我该如何处理查询?它可以被视为用户对象的哈希映射吗?还是它什么都没有?一旦我完成,我不确定如何处理它。提前谢谢。

1 个答案:

答案 0 :(得分:2)

试试这个:

 DatabaseReference db=FirebaseDatabase.getInstance().getReference().child("uploads");
   db.orderByChild("username").addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(DataSnapshot dataSnapshot, String s) {
              String usernames=dataSnapshot.child("username").getValue().toString();

            }

这将获取数据库中的所有用户名。如果您只想要一个用户名,那么您可以这样做:

db.orderByChild("username").equalTo(one_username_value_or_variable).addChildEventListener(new ChildEventListener(){....}