Java 如何访问Firestore子集合中字段的值
我的数据库如下所示: 当我没有“红色区域”的集合名称时,如何访问“绿色区域”中显示的字段的值Java 如何访问Firestore子集合中字段的值,java,android,firebase,google-cloud-firestore,Java,Android,Firebase,Google Cloud Firestore,我的数据库如下所示: 当我没有“红色区域”的集合名称时,如何访问“绿色区域”中显示的字段的值 如何在“红色区域”集合中循环查找字段“RequestStatus”等于“Completed”的所有集合 如果不收集,则无法检索文档值。因此,我建议将收藏名称更改为友谊状态。然后,您可以轻松检索文档的字段 它必须是这样的: FriendShip ---->Current User id --->Friendship Status -----> Doc
- 如何在“红色区域”集合中循环查找字段“RequestStatus”等于“Completed”的所有集合
- 如果不收集,则无法检索文档值。因此,我建议将收藏名称更改为友谊状态。然后,您可以轻松检索文档的字段
它必须是这样的:
FriendShip
---->Current User id
--->Friendship Status
-----> Document id
然后可以使用或函数
上述结构的代码
mfirebaseFirestore.collection("Friendship").document(mCurrentUser).collection("FriendshipStatus")
.whereEqualTo("RequestStatus", "Completed")
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
Log.d("abc", document.getId() + " => " + document.getData());
}
} else {
Log.d("abc", "Error getting documents: ", task.getException());
}
}
});
mfirebaseFirestore.collection(“友谊”).document(mCurrentUser.collection(“友谊状态”)
.whereEqualTo(“请求状态”、“完成”)
.get()
.addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
对于(QueryDocumentSnapshot文档:task.getResult()){
Log.d(“abc”,document.getId()+”=>“+document.getData());
}
}否则{
Log.d(“abc”,“获取文档时出错:”,task.getException());
}
}
});
注:
Whereequalto
在尝试查找集合中的数据时工作。因此,您必须查询到集合。然后使用whereequalto
处理与查询类似的文档如果不收集,则无法检索文档值。因此,我建议将收藏名称更改为友谊状态。然后,您可以轻松检索文档的字段
它必须是这样的:
FriendShip
---->Current User id
--->Friendship Status
-----> Document id
然后可以使用或函数
上述结构的代码
mfirebaseFirestore.collection("Friendship").document(mCurrentUser).collection("FriendshipStatus")
.whereEqualTo("RequestStatus", "Completed")
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
Log.d("abc", document.getId() + " => " + document.getData());
}
} else {
Log.d("abc", "Error getting documents: ", task.getException());
}
}
});
mfirebaseFirestore.collection(“友谊”).document(mCurrentUser.collection(“友谊状态”)
.whereEqualTo(“请求状态”、“完成”)
.get()
.addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
对于(QueryDocumentSnapshot文档:task.getResult()){
Log.d(“abc”,document.getId()+”=>“+document.getData());
}
}否则{
Log.d(“abc”,“获取文档时出错:”,task.getException());
}
}
});
注:
Whereequalto
在尝试查找集合中的数据时工作。因此,您必须查询到集合。然后使用whereequalto
来处理与查询类似的文档,如中所示,无法使用客户端SDK(Android、iOS、Web)列出文档的子集合
另一方面,“Cloud Firestore服务器客户端库的getCollections()
方法列出文档引用的所有子集合”
由于您似乎正在使用Android SDK,因此需要找到一个解决方案。一种可能的解决方法是将子集合名称保存在父文档中的专用字段中。例如,可以使用数组字段存储子集合的所有名称
当您使用Android SDK创建子集合的第一个文档时,通常会填充此字段
如果出于任何原因,您无法从客户端执行此操作,您可以使用云函数,该函数依赖于Admin SDK,因此可以使用上面提到的getCollections()
方法。如中所示,无法使用客户端SDK列出文档的子集合(Android、iOS、Web)
另一方面,“Cloud Firestore服务器客户端库的getCollections()
方法列出文档引用的所有子集合”
由于您似乎正在使用Android SDK,因此需要找到一个解决方案。一种可能的解决方法是将子集合名称保存在父文档中的专用字段中。例如,可以使用数组字段存储子集合的所有名称
当您使用Android SDK创建子集合的第一个文档时,通常会填充此字段
如果出于任何原因,您无法从客户端执行此操作,您可以使用云函数,该函数依赖于Admin SDK,因此可以使用上面提到的
getCollections()
方法。我将尝试此方法,并在这里告诉您,谢谢您的帮助!我会尝试一下,然后在这里告诉你,谢谢你的帮助!与其描述你不知道的东西,不如编辑你的问题来展示你知道的东西?也就是说,如果有几十个朋友拥有数百种友谊状态,那么什么决定了从哪个朋友那里返回什么状态?与其描述你不知道的内容,不如编辑你的问题以显示你知道的内容?也就是说,如果有几十个朋友拥有数百种友谊状态,那么什么决定了从哪个朋友那里返回什么状态?