Firestore - 如何从文档快照获取集合? [英] Firestore - How Can I Get The Collections From a DocumentSnapshot?
问题描述
假设我有一个 userSnapshot
,我已经使用了 get
操作:
DocumentSnapshot userSnapshot = task.getResult()。getData();
我知道我可以得到字段$ c (code> documentSnapshot
)(例如):
pre $ String userName = userSnapshot.getString(name);
它只是帮我获取字段的值
,但是如果我想在 userSnapshot
下面得到一个集合
?例如,其集合
其中包含文档
的好友。
这可能吗?
Cloud Firestore中的查询很浅。这意味着,当你 get()
一个文档时,你不会下载子集合中的任何数据。
想要获得子集合中的数据,你需要做第二个请求:
pre code获取文档
(@NonNull Task< DocumentSnapshot>任务){
if(task.isSuccessful() ){
DocumentSnapshot document = task.getResult();
// ...
} else {
Log.d(TAG,获取文档时出错。,task.getException());
}
}
});
$ b $ //获取子集合
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());
}
}
});
Let's say I have a userSnapshot
which I have got using get
operation:
DocumentSnapshot userSnapshot=task.getResult().getData();
I know that I'm able to get a field
from a documentSnapshot
like this (for example):
String userName = userSnapshot.getString("name");
It just helps me with getting the values of the fields
, but what if I want to get a collection
under this userSnapshot
? For example, its friends_list
collection
which contains documents
of friends.
Is this possible?
Queries in Cloud Firestore are shallow. This means when you get()
a document you do not download any of the data in subcollections.
If you want to get the data in the subcollections, you need to make a second request:
// 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());
}
}
});
这篇关于Firestore - 如何从文档快照获取集合?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!