【问题标题】:Firestore query on collection集合上的 Firestore 查询
【发布时间】:2019-06-20 21:28:22
【问题描述】:

我有一个集合 ID 列表。有什么方法可以查询和获取这些集合 ID 下的所有文档?无需迭代列表中的每个 id。

感谢您的宝贵时间

【问题讨论】:

  • 如果您询问如何跨多个集合运行查询,答案是(目前)还不能。见stackoverflow.com/questions/46573014/…
  • 我只看到一个集合(用户),其中包含一些由其文档 ID 表示的文档。你真正想查询什么?请回复@AlexMamo
  • @AlexMamo 是的,只有一个收藏用户。在我的代码中,我有来自此用户集合的文档 ID 列表。我想以某种方式查询此集合,以便它为我提供与列表中的 id 匹配的所有文档。列表列表 = ['C0smTfprmfdw...', 'test', 'yhwDu2qvTRX...']

标签: google-cloud-firestore


【解决方案1】:

根据您的上一条评论,我了解您希望获取单个集合中的所有文档而不是查询多个集合,这在 Firestore 中目前是不可能的。

如果您有一个 id 列表,则只需对其进行迭代并为列表中的每个 id 创建相应的 DocumentReference,然后将所有这些引用添加到 List<DocumentReference>。之后,遍历新列表并为每个引用创建一个Task,然后将所有这些任务对象添加到List<Task<DocumentSnapshot>>

最后,只需将 Tasks 列表传递给 Tasks 的 whenAllSuccess() 方法即可:

Tasks.whenAllSuccess(tasks).addOnSuccessListener(new OnSuccessListener<List<Object>>() {
    @Override
    public void onSuccess(List<Object> list) {
        //Do what you need to do with your list
        for (Object object : list) {
            YourObject yb = ((DocumentSnapshot) object).toObject(YourObject.class);
            Log.d("TAG", yb.getPropertyName);
        }
    }
});

在代码中,它看起来像我在这篇文章中的回答:

【讨论】:

  • 我刚刚编辑了这个问题并放了一行(我应该早点放,抱歉)我不想迭代我必须得到每个的 id 列表(List) doc ref 一个一个。如果在单查询调用中有什么可以做的,我正在寻找一种方法......
  • 回答您的新问题。 “有什么方法可以查询并获取这些集合 id 下的所有文档吗?无需迭代列表中的每个 id。” 不,没有! 唯一的方法是我的回答中解释的.您需要对列表进行迭代才能获得这些文件。
  • 感谢@AlexMamo 的宝贵时间
猜你喜欢
  • 1970-01-01
  • 2019-07-25
  • 1970-01-01
  • 1970-01-01
  • 2021-06-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多