作者:babe | 来源:互联网 | 2022-12-10 03:35
我试过这个:
Query firebaseSearchQuery =
myRef.orderByChild("from").startAt(searchText).endAt(searchText+"\uf8ff");
但我想要这样的东西
Query firebaseSearchQuery =
myRef.orderByChild("from").contains(searchText);
有可能的 ?
1> Alex Mamo..:
对于小型数据集,可以使用以下代码:
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
List list = new ArrayList<>();
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String from = ds.child("from").getValue(String.class);
list.add(from);
}
for(String str : list) {
if(str.contains(searchText)) {
Log.d("TAG", "String found!");
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
myRef.addListenerForSingleValueEvent(valueEventListener);
不建议对大型数据集使用此解决方案,因为您需要下载整个节点才能进行搜索。在这种情况下,建议使用Algolia或Elasticsearch。
如果你打算使用云公司的FireStore,我建议你看看我的回答从这个职位。有关更多信息,我也建议您观看此视频。