DatabaseReference databaseReference=mDatabase;
String queryText="Hotel";
databaseReference.orderByChild("Coupon")
.startAt(queryText)
.endAt(queryText+"\uf8ff");
在这里,我附上了用于获取"优惠券"的儿童姓名的代码。当我进入" Hotel"在优惠券下查询。但我得到了空白。我应该得到Hotel1,Hotel2对象。我是firebase的新手。所以希望你的支持。谢谢你。
答案 0 :(得分:2)
在Web版本中,他们使用名为ElasticSearch的东西,您可以尝试在此处阅读更多内容:https://firebase.googleblog.com/2014/01/queries-part-2-advanced-searches-with.html
但对于Android,我认为没有任何功能可以执行这样的搜索。我要做的是查询所有记录,然后自己过滤它们:
DatabaseReference databaseReference = mDatabase;
mDatabase.addValueEventListener(new ValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot val : dataSnapshot.getChildren()){
//I am not sure what record are you specifically looking for
//This is if you are getting the Key which is the record ID for your Coupon Object
if(val.getKey().contains("Hotel")){
//Do what you want with the record
}
//This is if your are querying for the hotel child
if(val.child("hotel").getValue(String.class).contains("Hotel")){
//Do what you want with the record
}
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
}
答案 1 :(得分:0)
不要加载整个数据库来过滤掉所需的数据。它产生不必要的流量,必须加载,计算和删除。相反,使用:
DatabaseReference myRef = FirebaseDatabase.getDatabaseReference();
Query searchQuery = myRef.child("Coupon").orderByChild("hotel").equalTo("yourSearchString");
要使此代码生效,您还必须在规则(Firebase数据库控制台)中的相应属性上添加indexOn
。