如果用户名作为字段存储在用户文档中,可以通过以下方式获取:
query.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
Log.d(TAG, document.getId() + " => " + document.getData().get("username"));
}
} else {
Log.d(TAG, "Error getting documents: ", task.getException());
}
}
});
有关更多示例,请参阅 executing a query 上的 Firebase 文档。
请注意,通常使用 UID 作为密钥来存储用户的文档,这样可以更容易地查找它们。
要像这样存储文档,您可以执行以下操作:
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
FirebaseFirestore.getInstxance()
.collection("users")
.document(uid)
.set(...)
然后你会得到它:
FirebaseFirestore.getInstxance()
.collection("users")
.document(uid)
.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()) {
DocumentSnapshot document = task.getResult();
if (document.exists()) {
Log.d(TAG, "DocumentSnapshot data: " + document.getData());
} else {
Log.d(TAG, "No such document");
}
} else {
Log.d(TAG, "get failed with ", task.getException());
}
}
});
您会注意到,我们现在不再需要之前的循环,因为我们获取的是一个特定的文档,而不是需要查询来为用户查找文档。