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

java - 查询Firebase数据库并检索有限的数据-LMLPHP

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

我想要的是

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

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

等同于:

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




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

最佳答案

这个:

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)是此限制20;

有关Firebase中查询的更多信息,请检查以下内容:Queries in Firebase

08-18 02:19