【发布时间】:2019-09-20 19:41:08
【问题描述】:
我正在使用具有以下结构的 Firestore 数据库:
我有一个名为NBDB的集合,里面有每个用户的uid的文档。例如,我有 2 个用户,所以我有 2 个文档称为:ZxK2BR...、xy9BHY...。
在每个用户文档中都有另一个名为 MyBooks 的集合,其中包含用户搜索的所有书籍的文档。
我想制作一个主页屏幕,从用户在应用数据库中拥有的所有图像中随机显示 20 张图像。
据我了解,我需要进入每个用户文档并搜索它拥有的所有my books,然后为下一个用户移动。
我的最终目标是读取所有用户的 BookID 值并随机选择 20 个
我使用以下方法从特定用户获取所有BookID:
FirebaseFirestore db = FirebaseFirestore.getInstance();
CollectionReference MyDB = db.collection( "NBDB" ).document(auth.getUid()).collection( "MyBooks" );
MyDB.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.getString( "BookID" ));
}
Log.d(TAG, list.toString());
} else {
Log.d(TAG, "Error getting documents: ", task.getException());
}
}
});
谢谢
【问题讨论】:
-
您这里似乎没有一个名为“mypics”的集合。我看到你有一个名为“USERS”的顶级集合,然后它下的每个文档都有另一个名为“users”的子集合。 “mypics”看起来像子集合文档中的一个字段。您能否编辑问题以更清楚地说明您如何构建数据库以及文档的相关字段是什么?要么这样,要么纠正代码,如果它不完全是你正在使用的。
-
澄清一下,您是在寻找一位用户的 20 张照片还是所有用户的所有照片中的 20 张照片?
-
我从所有用户的所有图片中寻找 20 张图片作为 20 张随机图片。
标签: java android google-cloud-firestore