如何在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

我需要firebase Android中的三级orderbychild

我已经应用了两个级别的
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”
,然后您可以对其进行排序/筛选。有关此方法和其他方法的详细示例,请参见我的回答: