在firebase实时数据库中搜索用户名

问题描述 投票:0回答:1

我正在构建一个集成 firebase 的 Android 应用程序,我想要一个功能,用户可以使用他们的姓名/用户名搜索其他用户。我目前正在使用 SearchView 小部件(想使用 onQueryTextChange()) 例如,如果用户输入代码,则所有匹配“代码”(或以“代码”开头,其中任何一个)的查询都会显示

Firebase 结构:

users
    <uid of user1>
            name: ....
            username: .......
    <uid of user2>
            name: ....
            username: .......
    ...
    ...

帮助我提供省时的解决方案(用java),这样搜索就很快

java android firebase firebase-realtime-database
1个回答
0
投票

在您拥有的结构中,如果您只想检索具有值为

users
属性且值为
username
"code"
的子节点,您可以使用查询来对 order 和 filter 节点进行排序。像这样的东西:

Query query = dbRoot.child("users").orderByChild("username").equalTo("code");

要执行查询,您需要执行以下操作:

query.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot userSnapshot: dataSnapshot.getChildren()) {
            Log.i("DB", userSnapshot.getKey());
            Log.i("DB", userSnapshot.child("name").getValue(String.class));
            ...
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        throw databaseError.toException();
    }
}

如果你想获取所有以

username
开头的子节点
"code"
,那就是:

Query query = dbRoot.child("users")
  .orderByChild("username")
  .startAt("code")
  .endAt("code~");
© www.soinside.com 2019 - 2024. All rights reserved.