如何应用循环从Firebase检索所需的数据?

时间:2018-09-16 10:34:42

标签: java android firebase firebase-realtime-database

我正在尝试从以下集合“ Buses”中获取数据,如果说出 Bus_Driver ==“ xyz”

我的Firebase测试如下:

enter image description here

我正在使用以下代码获取数据库引用:

 busInfoReference= FirebaseDatabase.getInstance().getReference("Buses");

我应用的以下循环无法正常工作:

for(DataSnapshot ds : dataSnapshot.getChildren()){
            busInfo = ds.getValue(BusInforamtion.class);
            if(ds.exists()) {
                if(busInfo.getBus_Driver().equalsIgnoreCase(driverName))
                {
                    saveData()

                    break;
                    //}
                }
            }

如何应用循环以获取所需数据?预先感谢。

1 个答案:

答案 0 :(得分:1)

要解决此问题,您需要像这样查询数据库:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
Query query = rootRef.child("Buses").orderByChild("Bus_Driver").equalsTo("xyz");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String Bus_Driver = ds.child("Bus_Driver").getValue(String.class);
            Log.d(TAG, Bus_Driver);
        }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d(TAG, databaseError.getMessage());
    }
};
query.addListenerForSingleValueEvent(valueEventListener);

logcat中的输出将包含所有总线驱动程序名称。