[英]Data not retrieving from Firebase database
我有一个 Firebase 数据库,如图所示。 我试图根据某些条件检索数据,但没有显示任何结果。
DbRef2 =FirebaseDatabase.getInstance().getReference().child("Notification");
DbRef2.child("45961").orderByChild("FromId").startAt("22222").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()){
Toast.makeText(getApplicationContext(),"hello",Toast.LENGTH_SHORT).show();
Notification notf = dataSnapshot.getValue(Notification.class);
Toast.makeText(getApplicationContext(),"hai"+notf.getFromId(),Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
吐司中没有任何显示。 我也尝试过 equalTo 而不是 startAt。 但没有结果。
您的代码中有四个问题。 第一个是您正在使用的查询。 如果您想根据条件获取结果,请更改以下查询:
DbRef2.child("45961").orderByChild("FromId").startAt("22222").addListenerForSingleValueEvent(/* ... */);
到:
DbRef2.orderByChild("FromId").startAt("22222").addListenerForSingleValueEvent(/* ... */);
不需要.child("45961")
调用,因为您需要遍历结果。
第二个问题是您将DataSnapshot
对象作为参数获取,但您没有循环获取结果。 要实际获得结果,您应该使用以下代码:
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()){
for(DataSnapshot ds : dataSnapshot.getChildren()) {
Toast.makeText(getApplicationContext(),"hello",Toast.LENGTH_SHORT).show();
Notification notf = ds.getValue(Notification.class);
Toast.makeText(getApplicationContext(),"hai"+notf.getFromId(),Toast.LENGTH_SHORT).show();
}
}
}
第三个问题是您没有检查潜在错误。 您还可以考虑使用:
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d("TAG", databaseError.getMessage()); //Don't ignore potential errors!
}
第四个问题在于您使用的名称以大写开头。 为此,我建议您从以下帖子中查看我的回答:
或者:
如果您班级中的字段是小写的。
改变这个:
DbRef2.child("45961").orderByChild("FromId").startAt("22222").addListenerForSingleValueEvent(new ValueEventListener() {
进入这个:
DbRef2.orderByChild("FromId").startAt("22222").addListenerForSingleValueEvent(new ValueEventListener() {
如果你想在orderByChild()
使用FromId
那么你不需要访问child("45961")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.