[英]How to fetch data from firebase datasnapshot?
我对 firebase 数据库几乎没有经验。 以下代码不起作用,因为它不会从数据库中检索用户名。 但是,它显示了来自datasnapshot
的数据快照。 这是代码。
databaseReference = FirebaseDatabase.getInstance().getReference().child("/userList/"+ FirebaseAuth.getInstance().getUid());
databaseReference.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
Log.d(TAG, "onChildAdded: " + dataSnapshot.toString());
for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()){
Users users = dataSnapshot1.getValue(Users.class);
String firstName = users.getFirstName();
String lastName = users.getLastName();
Log.d(TAG, "onChildAdded: " + firstName + " " + lastName);
}
}
}
datasnapshot
的数据快照
onChildAdded: DataSnapshot {
key = -Lt_5ltPuMx6CPSk5X8-,
value = {
firstName=firstname,
lastName=lastname,
email=firstname@gmail.com
}
}
这是我存储 firebase 数据的方式。
为/userList/$uid
下的每个孩子调用onChildAdded
回调。 每次调用它时,快照都会包含一个子节点。 在回调中,您正在遍历该快照的子项,这意味着您的dataSnapshot1
引用了各个属性( email
、 firstName
、 lastName
)。 由于这些不是完整的用户节点,因此dataSnapshot1.getValue(Users.class)
无法从中读取用户。
简而言之:删除循环,您应该会得到更好的结果:
databaseReference = FirebaseDatabase.getInstance().getReference().child("/userList/"+ FirebaseAuth.getInstance().getUid());
databaseReference.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
Log.d(TAG, "onChildAdded: " + dataSnapshot.toString());
Users users = dataSnapshot.getValue(Users.class);
String firstName = users.getFirstName();
String lastName = users.getLastName();
Log.d(TAG, "onChildAdded: " + firstName + " " + lastName);
}
}
另请参阅这些类似的问题:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.