我正在开发一个应用程序,我想查询Firestore子文档 . 让我进一步解释 .
-
我有一个存放汽车的文件集合,每个文件都有一个特定的汽车描述 .
-
在上面的每个文档中,我都有一个名为
user_data
的子集合,它有自己的文档,其中存储了将汽车添加到他的愿望清单的用户的特定用户标识 .
现在我想获得汽车的文件,如果其子集合中存在用户标识 . 简而言之,我想获得特定用户的心愿单 . 我正在使用带有listviewbuilder的streambuilder,但问题是如何执行此查询?
或者有更简单的方法吗?
2 回答
Firestore中的查询很浅,这意味着它们只从运行查询的集合中获取项目 . 无法从单个查询中的顶级集合和其他集合或子集合中获取文档 . Firestore不支持在一个步骤中跨不同集合进行查询 . 因此,您无法根据子集合中存在的项目从集合中获取项目 . 单个查询只能使用单个集合中的文档属性 .
因此,我能想到的最简单的解决方案是在每个用户对象下添加一组最喜欢的汽车 . 您的新数据库结构应类似于:
通过这种方式,您可以查询数据库以仅获取用户将其标记为收藏的汽车 . 您还可以在数组中存储而不是那些ID,即实际的汽车对象 . 请参阅 here 有关利弊的更多详情 .
目前,Firebase Cloud Firestore不支持使用子集合进行查询 . 您可能必须以可查询的方式构建数据库 .
将userid存储在汽车文档中的数组中 .
使用单独的集合来保持用户和汽车之间的连接 .
您可以从Firebase查看此视频 .
Maps, Arrays and Subcollections, Oh My! | Get to Know Cloud Firestore