所以我现在正在努力解决这个问题大约三个小时。
我有这个用户类
public class User {
private String user_id;
private String userName;
private long phoneNumber;
public User() {
}
public User(String user_id, String userName, long phoneNumber) {
this.user_id = user_id;
this.userName = userName;
this.phoneNumber = phoneNumber;
}
我想从Firebase数据库中获取此类的一些实例我正在使用此代码执行此操作:
数据库参考;
User currentUser;
DatabaseReference database = FirebaseDatabase.getInstance().getReference();
DatabaseReference usersRef = database.child("users");
查询代码:
Query query = usersRef.orderByChild("user_id").equalTo(user_id);
query.addListenerForSingleValueEvent (new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
currentUser = dataSnapshot.getValue(User.class);
}
有趣的是:这段代码实际上工作了一次,但我猜想我做了一些修改,现在getValue()返回null;
这是我在firebase中的数据库
当我调试应用程序时,dataSnapshot实际上包含我正在寻找的对象
但是currentUser将是一个对象,其所有字段都为null;
有任何想法吗?我已经非常沮丧了:(
提前谢谢!
答案 0 :(得分:5)
您需要迭代dataSnapshot.getChildren(
...例如
for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
User user = childSnapshot.getValue(User.class);
}
答案 1 :(得分:2)
我也遇到了同样的问题,原来是因为类(在您的情况下为User.class)没有用于所需变量的setter方法
答案 2 :(得分:1)
如果在 firebase 实时数据库规则中将读取权限设置为 false,它也可以返回 null。将其设置为 true 将返回值。