我正在开发一个小型班次管理应用程序,其中班次存储在Firebase的数据库中。 我想获取与日期相关的所有班次(每个日期都有不同的班次数量)。
为此,我创建了以下数据库:
// previous dates
"20190415" : [ null, {
"end" : "16:00",
"name" : "morningShift",
"numOfEmps" : 3,
"start" : "08:00",
"wage" : 0
}, {
"emps" : null,
"end" : "00:00",
"name" : "eveningShift",
"numOfEmps" : 3,
"start" : "16:00",
}, {
"emps" : null,
"end" : "08:00",
"name" : "nightShift",
"numOfEmps" : 3,
"start" : "00:00",
} ],
// following dates
我在Java中的代码如下:
// Retrieve shifts per date from Firebase
// Date passed to this function is of form - YYYYMMDD
public static void fetchShiftsPerDayFromDB(String date, final Callback callback)
{
FirebaseDatabase db = FirebaseDatabase.getInstance();
DatabaseReference ref = db.getReference("config").child("shiftsPerDay").child(date);
ref.addValueEventListener(new ValueEventListener()
{
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot)
{
ArrayList<Shift> shifts = new ArrayList<>();
for (DataSnapshot shiftSnapshot : dataSnapshot.getChildren())
{
// Retrieve Shift from Database
Shift shift = new Shift();
shift.setName(shiftSnapshot.child("name").getValue().toString());
shift.setStart(shiftSnapshot.child("start").getValue().toString());
shift.setEnd(shiftSnapshot.child("end").getValue().toString());
shift.setNumOfEmps((int)shiftSnapshot.child("numOfEmps").getValue());
shift.setWage((int)shiftSnapshot.child("wage").getValue());
// shift.setEmpsList(null);
shifts.add(shift);
}
callback.shiftsCallback(shifts);
}
但是for循环不会执行。这里可能是什么问题?
非常感谢您的帮助。 谢谢。