在Firebase android中获取所有用户相同的孩子

时间:2017-03-02 13:37:38

标签: android firebase firebase-realtime-database

我目前正在Firebase中构建一个应用程序,我想让所有用户停车位,但问题是我的代码没有从firebase检索每个用户的停车位子,它没有得到任何数据。< / p>

这是我的代码:

public ArrayList<ParkingSpace> retrieve() {
    db.child("Users").child("Parking Spaces").orderByChild("adress").equalTo("park1").addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {
            fetchData(dataSnapshot);
        }
        ...
    };
}

private void fetchData(DataSnapshot dataSnapshot) {   
    ParkingSpace space = dataSnapshot.getValue(ParkingSpace.class);
    space.setId(dataSnapshot.getKey());
    parkingsSpaces.add(space);
}

这是树:

database

1 个答案:

答案 0 :(得分:0)

db.child("Users").child("Parking Spaces").orderByChild("adress").equalTo("park1")

此代码将使用值=&#34; park1&#34;来检索每个停车位。 而您的parkingSpace值是具有内部属性的对象。我不认为Firebase提供了通过按属性过滤直接检索它们的方法。

您必须在应用程序中过滤响应:

public ArrayList<ParkingSpace> retrieve() {
    db.child("Users").child("Parking Spaces").orderByChild("adress").addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {
            fetchData(dataSnapshot);
        }
        ...
    };
}

 private void fetchData(DataSnapshot dataSnapshot) {
        ParkingSpace space = dataSnapshot.getValue(ParkingSpace.class);
        if ( "park1".equals(space.getAdress)) {
            space.setId(dataSnapshot.getKey());
            parkingsSpaces.add(space);
        }
    }