【发布时间】:2021-08-03 07:11:13
【问题描述】:
我正在开发一个安卓项目。有一个与 Firebase 数据库相关的错误。因此,我需要一位对 firebase 数据库非常熟悉的经验丰富的 Android 开发人员。 错误:我正在使用 addListenerForSingleValueEvent,当我尝试获取所有数据时,它返回数据,当我为 status = ACTIVE 设置查询时,即使数据库有一个 ACTIVE 条目,它也会返回 dataSnaphot null。当我使用 addValueEventListener 时,它工作正常。 请帮帮我。
private void getMeetingData(){
//Constants.MEETING_STATUS = meeting_status
//Constants.MEETING_STATUS_ACTIVE = ACTIVE
//Constants.MEETING_STATUS_INACTIVE = INACTIVE
databaseReference0 = FirebaseDatabase.getInstance().getReference().child("meeting"); //is this correct
databaseReference0.orderByChild(Constants.MEETING_STATUS).equalTo(Constants.MEETING_STATUS_ACTIVE).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
//MeetingModel getAllData = null;//wait, should i run it in debug mode
//Log.i("printMeeting",getAllData.toString());
for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
MeetingModel getAllData = dataSnapshot1.getValue(MeetingModel.class);
arrayList.add(getAllData);
Log.d("printMeeting",getAllData.toString());
}
if (arrayList.isEmpty()) {
} else {
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
【问题讨论】:
-
Constants.MEETING_STATUS_ACTIVE是什么类型?您将状态值保存为String -
首先,停止忽略错误。使用
Log.d(TAG, error.getMessage());。您是否在 logcat 中打印了一些内容?除此之外,Constants.MEETING_STATUS和Constants.MEETING_STATUS_ACTIVE的值是多少?请回复@AlexMamo -
更新了问题。请帮帮我
-
如果
Constants.MEETING_STATUS_ACTIVE = "ACTIVE"准确,您将不会得到任何结果,因为您在数据库中的会议状态是"0"而不是"ACTIVE" -
@AlexMamo ,没有错误。每次都会调用 onDataChanged 但只有 dataSnapshot 值为 null
标签: java android firebase firebase-realtime-database