【发布时间】:2017-06-12 08:10:57
【问题描述】:
我创建了一个 Android 应用程序,用户可以通过该应用程序注册和登录。当用户注册成功时,将在我的数据库中为该用户创建名称和值。现在我想分别检索每个用户的数据。
【问题讨论】:
标签: android firebase firebase-realtime-database firebase-authentication
我创建了一个 Android 应用程序,用户可以通过该应用程序注册和登录。当用户注册成功时,将在我的数据库中为该用户创建名称和值。现在我想分别检索每个用户的数据。
【问题讨论】:
标签: android firebase firebase-realtime-database firebase-authentication
要从这个结构中检索当前用户的数据,你需要做两件事:
在代码中:
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
FirebaseDatabase.getInstance.getReference(uid).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
long points = dataSnapshot.child("Points").getValue(Long.class);
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException();
}
});
【讨论】:
System.out.println(points); 并检查 logcat。
试试这个:
mDatabase.child("ezzeearn").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Map<String, String> map = (Map<String, String>) dataSnapshot.getValue();
String point = map.get("Points");
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
【讨论】:
使用迭代器可以获取特定用户的数据
Iterator<String> iter = json.keys();
while (iter.hasNext()) {
String key = iter.next();
try {
Object value = json.get(key);
} catch (JSONException e) {
// Something went wrong!
}
}
【讨论】:
尝试使用以下方法:
public void getAllUsersFromFirebase() {
DatabaseReference UserRef = FirebaseDatabase.getInstance().getReference().child("ezzeearn");
UserRef.keepSynced(true);
UserRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Iterator<DataSnapshot> dataSnapshots = dataSnapshot.getChildren().iterator();
while (dataSnapshots.hasNext()) {
DataSnapshot dataSnapshotChild = dataSnapshots.next();
String resultString = (String)dataSnapshotChild.getValue();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
// for handling database error
}
});
}
【讨论】: