查询firebase数据库并检索有限的数据

时间:2018-01-21 14:57:41

标签: java android firebase firebase-realtime-database

我有一个使用Firebase数据库的android应用程序。 Firebase数据库结构如下:

enter image description here

Users的每个孩子都是不同用户的username

我想要什么

我的应用程序中有一个搜索字段,我已附加TextChangedListener。此搜索字段可用于搜索其他用户的usernames

现在,当用户在搜索字段中输入任何文字,例如jo时,我想从以jo开头的数据库中提取前20个用户名,在我的例如,它将返回john_jj以及以jo开头的所有其他用户名。

等同于:

SELECT username 
FROM table 
WHERE username LIKE 'jo%' 
LIMIT 20;

问题

如何编写查询以从Firebase数据库获取以特定字母开头的前20个用户名,例如jo

1 个答案:

答案 0 :(得分:3)

此:

SELECT username 
FROM table 
WHERE username LIKE 'jo%' 
LIMIT 20;

在firebase中可以是这样的:

DatabaseReference ref=FirebaseDatabase.getInstance().getReference().child("Users");
ref.orderByChild(username).startAt("jo").endAt("jo\uf8ff").limitToFirst(20).addValueEventListener(new ValueEventListener(){

@Override
public void onDataChange(DataSnapshot dataSnapshot) {
    for(DataSnapshot data: dataSnapshot.getChildren()){
       String usernames=data.getKey();
    }
}

@Override
public void onCancelled(DatabaseError databaseError) {

  }
});

child("Users")是表格

orderByChild(username)

startAt("jo").endAt("jo\uf8ff")就是这样的'jo%'

limitToFirst(20)是LIMIT 20;

有关firebase中查询的详细信息,请查看以下内容:Queries in Firebase