【问题标题】:Firestore- Querying SubcollectionsFirestore - 查询子集合
【发布时间】:2020-05-31 22:24:47
【问题描述】:

firestore.collection("CATEGORIES").document("HOME").collection("TOP_DEALS")
                .orderBy("index").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
            @Override
            public void onComplete(@NonNull Task<QuerySnapshot> task) {
                Log.d(TAG, "onComplete: Task Successful? "+task.isSuccessful());
                if (task.isSuccessful()){
                    Log.d(TAG, "onComplete: task.getResult().getDocuments().size() :"+task.getResult().getDocuments().size());
                    for (QueryDocumentSnapshot documentSnapshot:task.getResult()){
                        Log.d(TAG, "onComplete: inside For loop");
                    }
                }else {
                    String error=task.getException().getMessage();
                    Toast.makeText(getContext(), error, Toast.LENGTH_SHORT).show();
                }
            }
        });

我想处理 TOP_DEALS 子集合中的所有文档。 即使任务成功,task.result() 也是空的,并且 for each 中的语句永远不会执行。 我应该如何查询子集合中的所有文档?

【问题讨论】:

  • 请不要放代码图片——以后任何人都不可能搜索同样的问题。
  • 我已经编辑了问题。
  • 所有文本也是如此。将文本复制到问题本身中,以便于阅读。
  • 请为您的TOP_DEALS 子集合添加更详细的屏幕截图。请回复@AlexMamo
  • @AlexMamo 我已经添加了 TOP_DEALS 的详细截图。

标签: java android firebase google-cloud-firestore nosql


【解决方案1】:

欢迎!

如果我理解正确,index 字段位于HOME 文档的字段中。根据Google Documentation

orderBy() 子句还过滤给定字段的存在。 结果集将不包括不包含 给定的字段。

在提供的代码中,“orderBy”用于TOP_DEALS 集合,而归档在父文档HOME 中。

我不确定您想在这里订购什么,但我认为有两种方法可以解决。第一个您必须将orderby 移动到CATEGORIES 集合或第二个将索引添加到TOP_DEALS 集合中的文档。

【讨论】:

  • 所有 TOP_DEALS 文档也都有一个索引字段。
猜你喜欢
  • 2019-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-12
  • 2020-07-26
  • 1970-01-01
相关资源
最近更新 更多