在Flutter中使用Firestore获取不同集合中的文档列表

时间:2020-01-28 19:22:24

标签: firebase flutter google-cloud-firestore

我有一个具有不同投资组合的用户列表。每个投资组合具有相同的属性,但也具有投资的集合。就像这样:

Map user = {
  "name": "John",
  "portfolios": [ // collection
    {
      "title": "My portfolio 1",
      "investments": [ // collection
        {"title": "My investment 1.2"},
        {"title": "My investment 1.2"}
      ]
    },
    {
      "title": "My portfolio 2",
      "investments": [ // collection
        {"title": "My investment 2.1"},
        {"title": "My investment 2.2"},
        {"title": "My investment 2.3"}
      ]
    }
  ]
};

要获得我的投资组合,我要做这样的事情:

Future getMyPortfolios() async {
    final userId = await authService.getUserId();
    final portfolios = await Firestore.instance
        .collection('users')
        .document(userId)
        .collection('portfolios')
        .getDocuments();
    return portfolios.documents;
  }

但这只会返回带有标题的投资组合,而不是带有投资的内部集合。

我可以使用这些ID再次拨打电话,但我想知道是否有一种更快的方法来从该特定用户那里获取所有信息。

1 个答案:

答案 0 :(得分:1)

没有更快的选择。您将需要一个单独的查询来获取其他任何集合中的文档,即使它们是子集合。 Firestore查询始终是“浅”的。没有“深层”查询会在子集合中获取嵌套文档。