gpt4 book ai didi

firebase - Cloud Firestore 一次获取多个文档

转载 作者:行者123 更新时间:2023-12-05 06:36:07 27 4
gpt4 key购买 nike

我正在构建一个包含UsersSports TeamsArticles 的应用。

用户可以关注任何运动队,在该运动队中,一些用户将成为贡献者并发布文章供关注者查看。

一百万个用户可以关注同一个运动队,但只有少数用户,例如10,将是可以发布有关该特定 运动队文章 的贡献者。

阅读 Firestore,我可能倾向于按以下方式构建我的数据:

例如结构:

  • 用户 (根集合)
    • 用户(文档)
      • 关注运动队 ID( map )
  • 运动队 (Root Collection)
    • 运动队(文档)
      • contributingUsersIDs( map )
      • 帖子 (子集)
        • 发布(文档)

根据我的理解,如果我想执行查询以列出所有我作为贡献者的 Sports Teams,我会简单地获取 Sports Teams where('contributingUsersIDs.someUserID', '==', true).

问题:您打算如何执行一个简单的查询来检索您作为特定用户关注的所有 Sports Teams 文档的列表?在 Datastore 中,我只需执行 ofy().load().keys(followingSportsTeamsIDsKeys).values()

正确的解决方案是简单地获取用户拥有的所有followingSportsTeamsIDs,然后如果说他们跟随一千个不同的运动队来简单地做db.collection("teams").document("someTeamID").getDocument 并在客户端的 for 循环中请求每个 ID?好像有点过分?但也许不是因为 Firestore 保持持久连接?<​​/p>

或者,我打算如何为 Firestore 重组我的数据?

最佳答案

目前无法使用 Cloud Firestore 一次获取多个文档(目前)。

你是对的,如果你必须在循环中执行请求,这些类型的连接会变得非常低效。这不像您为每个人进行单独的 HTTP 调用那样糟糕(如您所说,它们将共享一个连接),但也不是很好。

相反,您可能想要复制一些数据。例如,如果您有一个屏幕,用户可以在其中看到他们关注的每个团队,那么您可能只需要在该屏幕上显示每个团队的名称。在这种情况下,您可以让用户看起来像这样:

{

username: "whatever",
teams: [
{
id: "team_1",
name: "Team One"
}
...
]
}

这是您在使用 NoSQL 数据库时必须做出的权衡之一。根据数据的使用方式优化您的数据结构!

关于firebase - Cloud Firestore 一次获取多个文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49305185/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com