火力地堡数据库中的数据检索-Java
问题描述:
这里是我的数据库结构:火力地堡数据库中的数据检索-Java
user="hrcj7";
mDatabase = FirebaseDatabase.getInstance().getReference().child("User");
Query phoneQuery = mDatabase.orderByChild(user);
phoneQuery.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String prevChildKey) {
User dinosaur = dataSnapshot.getValue(User.class);
System.out.println(dataSnapshot.getKey() + " was " + dinosaur.getEmail() + " meters tall.");
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.e("App", "onCancelled", databaseError.toException());
}
});
这是dataSnapsshot值取回后:
我用于数据读取代码
DataSnapshot {
key = hrcj7,
value = {
-Kh2-jOeGXCOr-VE3uD5={
username=hrcj7,
[email protected],
imageurl=https://firebasestorage.googleapis.com/v0/b/freelancer-33195.appspot.com/o/Blog_Images%2Fcropped933315999.jpg?alt=media&token=7890f05f-87db-4a9d-9534-02da00225470
}
}
}
这是模型类:
public class User {
public String email;
public String imageurl;
public String username;
public User(String email,String imageurl,String username) {
this.email = email;
this.imageurl=imageurl;
this.username=username;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getImageurl() {
return imageurl;
}
public void setImageurl(String imageurl) {
this.imageurl = imageurl;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public User() {
// Default constructor required for calls to DataSnapshot.getValue(User.class)
}
}
我的问题是dinosaur.getEmail()
检索值后得到空值。可能是什么问题?提前致谢。
答
在这里我找到了解决方案。
在行:
User dinosaur = dataSnapshot.getValue(User.class);
应更换如下:
String key = mDatabase.child("User").child(user).push().getKey();
User dinosaur = dataSnapshot.child(key).getValue(User.class);
为什么恐龙 “的电子邮件米高的”? –
我得到了空值为dinosaur.getEmail() – HRCJ
在'mDatabase.orderByChild(用户);'我们无法知道'mDatabase'和'用户'是什么。请确保代码足够完整,以重现问题,因为这两者非常重要。它有助于:1)尽可能使用硬编码值,2)从FirebaseDatabase.getInstance()开始。 –