如何在firebase Android中应用高达三级的OrderbyChild
我需要firebase Android中的三级orderbychild 我已经应用了两个级别的如何在firebase Android中应用高达三级的OrderbyChild,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我需要firebase Android中的三级orderbychild 我已经应用了两个级别的orderbychild mFirebaseDatabase.getReference("childs").orderByChild("busNo").equalTo(no); DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference("childs"); mDatabase.orderByChild("chil
orderbychild
mFirebaseDatabase.getReference("childs").orderByChild("busNo").equalTo(no);
DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference("childs");
mDatabase.orderByChild("childPosition").addValueEventListener(new ValueEventListener() { }
没有这样的错误,但是找到了解决方法。Firebase不支持通过多个查询进行排序 查询一次只能按一个键排序。调用orderByChild() 在同一查询上多次抛出错误 尝试通过简单查询进行排序,然后过滤数据,示例:
Query searchAllQuery = usersRef
.orderByChild("fullname")
.startAt(searchBoxInput.toUpperCase())
.endAt(searchBoxInput.toLowerCase() + "\uf8ff" )
searchAllQuery.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
// filter your data here by username and country
User user = dataSnapshot.getValue(User.class);
if (user.getUsername().contains('wei') || user.getCoutnry().contains('usa')) {
// add the user to your list maybe?
}
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
Firebase数据库查询只能对单个属性进行排序/筛选。在许多情况下,可以将要筛选的值组合到单个(合成)特性中。因此,在您的情况下,这可能是一个属性
“busNo\u childPosition”:“value1\u value2”
,然后您可以对其进行排序/筛选。有关此方法和其他方法的详细示例,请参见我的回答: