java - 如何从 Firestore Android 中的集合中获取文档列表
问题描述
我的 Firestore 数据库结构:
|
|=>root_collection
|
|=>doc1
|
|=>collection
|
|=>doc2
|
|=>collection
|
|=>doc3
|
|=>collection
现在我想从中获取文件列表root_collection
。会有一个包含以下数据的列表{"doc1", "doc2", "doc3"}
。我需要它,因为我想制作一个微调器并将这些数据放入微调器中。然后用户将选择一些文档并下载它。
我尝试使用下面的代码:
firestore.collection("root_collection")
.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());
}
} else {
Log.d(TAG, "Error getting documents: ", task.getException());
}
}
});
但是代码只有在我拥有文档中没有集合的数据结构时才有效。在其他情况下, 中没有任何文件QueryDocumentSnapshot
。
谢谢!
解决方案
要在 中包含包含所有文档名称的列表root_collection
,请使用以下代码:
firestore.collection("root_collection").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
List<String> list = new ArrayList<>();
for (QueryDocumentSnapshot document : task.getResult()) {
list.add(document.getId());
}
Log.d(TAG, list.toString());
} else {
Log.d(TAG, "Error getting documents: ", task.getException());
}
}
});
您的 logcat 中的结果将是:
[doc1, doc2, doc3]
请记住,只有当您在这些文档中具有某些属性时,此代码才有效,否则您将得到一个空列表。
推荐阅读
- microsoft-cognitive - 是否还有对 https://api.projectoxford.ai/vision/v1 的文档或支持?
- python - 使用python进行网页抓取(Beautifulsoup)
- reactjs - 从 redux 函数获取响应
- java - 列表到地图转换
- php - TinyMCE 编辑器的格式不会使用 PHP-Mailer 通过电子邮件发送
- reactjs - 如何在 ReactJS 中首次挂载时不渲染组件的部分子项?
- azure - 如何使用 azure 数据工厂复制特定目录中的所有文件和文件夹
- python - 一次导入一个模块并在 python 中全局使用它
- typescript - 打字稿条件类型
- javascript - 如何在反应路由器中使用 match.params