繁体   English   中英

如何查询到 Firestore 子文档

[英]How to query to Firestore sub document

我正在开发一个应用程序,我想查询 Firestore 子文档。 让我进一步解释。

  1. 我有一个存储汽车的文档集合,每个文档都有一个带有描述的特定汽车。
  2. 在上面的每个文档中,我都有一个名为user_data的子集合,它有自己的文档,其中存储了将汽车添加到他的心愿单的用户的特定用户 ID。

现在,如果用户 ID 存在于其子集合中,我想获取汽车的文档。 简而言之,我想获取特定用户的愿望清单。 我正在将 streambuilder 与 listviewbuilder 一起使用,但问题是如何执行此查询?

或者有没有更简单的方法来做到这一点?

Firestore 中的查询是浅层的,这意味着它们只能从运行查询的集合中获取项目。 无法在单个查询中从顶级集合和其他集合或子集合中获取文档。 Firestore 不支持一步跨不同集合的查询。 因此,您无法根据子集合中存在的项目从集合中获取项目。 单个查询只能使用单个集合中的文档属性。

简而言之,我想获取特定用户的愿望清单。

所以我能想到的最简单的解决方案是在每个用户对象下添加一组最喜欢的汽车。 您的新数据库结构应该类似于:

Firestore-root
    |
    --- users
          |
          --- uid
               |
               --- favoriteCars : ["carId", "carId"]

通过这种方式,您可以查询数据库以仅获取用户将其标记为收藏的汽车。 您还可以将这些 id 存储在数组中,而不是存储实际的汽车对象。 在此处查看有关优缺点的更多详细信息。

目前 Firebase Cloud Firestore 不支持使用子集合进行查询。 您可能必须以可查询的方式构建数据库。

  • 将用户 ID 存储在汽车文档中的数组中。
  • 使用单独的集合来保持用户和汽车之间的联系。

您可以从 Firebase 查看此视频。

映射、数组和子集合,天哪! | 了解 Cloud Firestore

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM