当你存储用户数据时,用 uid 存储。就像 json 对象一样。 uid 作为键,用户数据作为值。然后您可以使用此 uID 获取 firebaseDatabasereference。
{
"users": {
"uid_of_first_user": {
"username": "usernam",
"email": "bobtony"
},
"uid_of_second_user": {
"username": "usernam",
"email": "bobtony"
},
}}
使用以下代码获取值
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("users/uid_of_first_user");
// Read from the database
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// This method is called once with the initial value and again
// whenever data at this location is updated.
User value = dataSnapshot.getValue(User.class);
Log.d(TAG, "Value is: " + value);
}
@Override
public void onCancelled(DatabaseError error) {
// Failed to read value
Log.w(TAG, "Failed to read value.", error.toException());
}
});
创建 User.class。每个变量名称必须与 firebase 中的相同。并且不要忘记创建默认构造函数。就像下面
public class User {
String username;
String email;
public User() {
}
public User(String username, String email) {
this.username = username;
this.email = email;
}
}
如果您想获取所有用户数据。按照下面的代码。
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("users");
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot userSnapshot: dataSnapshot.getChildren()) {
// TODO: handle the post
User value = userSnapshot.getValue(User.class);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
// Getting Post failed, log a message
Log.w(TAG, "loadPost:onCancelled", databaseError.toException());
// ...
}
});