假设我使用userSnapshot
操作我有一个get
:
DocumentSnapshot userSnapshot=task.getResult().getData();
我知道我可以从field
这样获得documentSnapshot
(例如):
String userName = userSnapshot.getString("name");
它只是帮助我获取fields
的值,但如果我想在此collection
下获得userSnapshot
该怎么办?例如,其friends_list
collection
包含documents
个朋友。
这可能吗?
答案 0 :(得分:3)
Cloud Firestore中的查询很浅。这意味着当您get()
文档时,您不会下载子集合中的任何数据。
如果要获取子集中的数据,则需要发出第二个请求:
// Get the document
docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()) {
DocumentSnapshot document = task.getResult();
// ...
} else {
Log.d(TAG, "Error getting document.", task.getException());
}
}
});
// Get a subcollection
docRef.collection("friends_list").get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (DocumentSnapshot document : task.getResult()) {
Log.d(TAG, document.getId() + " => " + document.getData());
}
} else {
Log.d(TAG, "Error getting subcollection.", task.getException());
}
}
});