如何按任意字段搜索 Firebase 数据库?
How to search Firebase database by any field?
有什么方法可以通过任何实时 Firebase 数据库字段进行搜索吗?现在我知道如何通过 FP_CarNumber 进行搜索,但我想同时通过 SP_CarNumber
或 SP_CarNumber
和 FP_CarNumber
等其他人进行搜索。
private void txtSearch(String str){
FirebaseRecyclerOptions<MainModel> options =
new FirebaseRecyclerOptions.Builder<MainModel>()
.setQuery(FirebaseDatabase.getInstance().getReference().child("Declaration_Data").child(currentuser).child("Declarations").orderByChild("FP_CarNumber").startAt(str).endAt(str + "\uf8ff"), MainModel.class)
.build();
mainAdapter = new MainAdapter(options);
mainAdapter.startListening();
recyclerView.setAdapter(mainAdapter);
}
实时数据库仅支持单字段查询属性。我已经在我的回答中解释过:
如何通过创建一个额外的字段来保留其他值来解决这种情况。不幸的是,该解决方法并不适用于所有情况。
除此之外,据我所知,Android 中没有库可以自动执行此操作。然而,有一个网络版,由 David East 编写,名为 Querybase。
与实时数据库不同,Cloud Firestore allows compound queries。所以我建议你试试看。
有什么方法可以通过任何实时 Firebase 数据库字段进行搜索吗?现在我知道如何通过 FP_CarNumber 进行搜索,但我想同时通过 SP_CarNumber
或 SP_CarNumber
和 FP_CarNumber
等其他人进行搜索。
private void txtSearch(String str){
FirebaseRecyclerOptions<MainModel> options =
new FirebaseRecyclerOptions.Builder<MainModel>()
.setQuery(FirebaseDatabase.getInstance().getReference().child("Declaration_Data").child(currentuser).child("Declarations").orderByChild("FP_CarNumber").startAt(str).endAt(str + "\uf8ff"), MainModel.class)
.build();
mainAdapter = new MainAdapter(options);
mainAdapter.startListening();
recyclerView.setAdapter(mainAdapter);
}
实时数据库仅支持单字段查询属性。我已经在我的回答中解释过:
如何通过创建一个额外的字段来保留其他值来解决这种情况。不幸的是,该解决方法并不适用于所有情况。
除此之外,据我所知,Android 中没有库可以自动执行此操作。然而,有一个网络版,由 David East 编写,名为 Querybase。
与实时数据库不同,Cloud Firestore allows compound queries。所以我建议你试试看。