我的数据库的结构使得我有一个用户集合,其中包含 user 文档,每个文档都有一个DocumentReferences
数组的字段。与用户集合处于同一级别的集合。
我需要检索此数据并在完成查询后填充RecyclerView。目前,我的困境是我需要迭代每个DocumentReference
并且只在最终onSuccessListener
执行时初始化我的RecyclerView。在Firestore中有可靠的方法吗?
答案 0 :(得分:0)
您仍然可以在RecyclerView
之前初始化onSuccessListener
,并在添加notifyDataSetChanged()
item
要从
Collection
填充数据,我们可以使用for each
循环来遍历Documents
CollectionReference ref = FirebaseFirestore.getInstance().collection(USERS);
ref.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot>task){
if (task.isSuccessful()) {
for(DocumentSnapshot document : task.getResult()){
//query here
item.add(document);
adapter.notifyDataSetChanged();
}
} else {
//fail getMessage
}
}
});
答案 1 :(得分:0)
从今天(2018-08-13)开始,根据有关array membership的更新文档,现在可以使用whereArrayContains()
方法基于数组值过滤数据。在您的情况下,您应该使用:
CollectionReference usersRef = db.collection("users");
usersRef.whereArrayContains("DocumentReferences", SpecificDocumentReferences);
此查询返回每个用户文档,其中
DocumentReferences
字段是包含特定文档参考的数组。如果该数组具有要查询的值的多个实例,则该文档仅包含在结果中一次。