java - Firebase android获取对象的值不为null,但获取对象的属性返回null
问题描述
这似乎是一个相当容易解决的问题,但我正在绞尽脑汁想知道出了什么问题。我正在尝试在数据库中查询某个键,如果该键存在,我想要与该键关联的值。这是我的 firebase 数据库,其中第一个节点是用户所做的。在此之前是根 ref。
我正在尝试查询特定日期。这是我的代码
DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
reference.child(FirebaseMethods.getUserUid()).child("Events")
.orderByKey()
.equalTo(firebaseDate).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Event event = dataSnapshot.getValue(Event.class);
boolean isNull = event == null;
Log.i(TAG,"is null" + isNull);
Log.i(TAG,"uri " + event.getmImageUrl());
Log.i(TAG,"date " + event.getmDate());
//Log.i(TAG,event.getOutfit().)
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
其中 FirebaseMethods.getUserUid() 返回唯一的用户 ID。问题是事件不为空,但是当我尝试获取事件内部的属性时,它们返回我为空。
事件.java:
public class Event {
private String mDate;
private String mImageUrl;
private Outfit outfit;
public Event() {}
public Event(String mDate, String mImageUrl,Outfit outfit) {
this.mDate = mDate;
this.mImageUrl = mImageUrl;
this.outfit = outfit;
}
public void setmDate(String mDate) {
this.mDate = mDate;
}
public void setmImageUrl(String mImageUrl) {
this.mImageUrl = mImageUrl;
}
public String getmDate() {
return mDate;
}
public String getmImageUrl() {
return mImageUrl;
}
public Outfit getOutfit() {
return outfit;
}
}
不确定我的查询是否有问题?因为当我打印数据快照时,它给了我 {key = Events, value = {23-08-2018,........} 这与我给它的 firebaseDate 相同。
解决方案
您的代码不起作用,因为 Firebase SDK 无法将节点的直接子Events
节点(似乎是格式化的日期字符串)映射到 class 的字段中Event
。它不会自动进入每个子节点并假设您想要哪个(您至少有两个格式化的日期子节点显示)以及您希望它们如何映射到您的类中。
相反,您应该考虑迭代快照子代,然后根据需要将它们映射到 Event 对象中。
推荐阅读
- css - how tp set the different font fill text color for selected label in a JFXListView?
- sql - Rank() over(oracle 分区返回 1 条记录
- altbeacon - AltBeacon 发射器/扫描器
- c++ - 使用 Qt creator 独立编译 c++ 应用程序
- bash - 将数字参数范围传递给 Bash 脚本
- editor - “视图 -> 组 -> 最大列数:2”的 Sublime 3 键绑定
- javascript - 将字符串添加到变量中会在 javascript onkey 函数中添加“\”
- django - Django - 子模板从父模板扩展 CSS 但无法使用其 CSS
- javascript - 聚焦元素时,页面不会在 Firefox 和 IE 中滚动?
- laravel - 如何上传数组输入类型的图像