android - 如何查询到 Firestore 子文档

标签 android firebase dart flutter google-cloud-firestore

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

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

现在我想获取 cars 的文档,前提是 userid 存在于它的子集合中。简而言之,我想获得特定用户的心愿单。 我将 streambuilder 与 listviewbuilder 结合使用,但问题是我该如何执行此查询?

或者有更简单的方法吗?

最佳答案

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

In short, I want to get the wishlist of a particular user.

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

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

通过这种方式,您可以查询您的数据库以仅获取用户标记为最喜欢的汽车。您还可以将实际的汽车对象存储在数组中,而不是存储这些 ID。请参阅 here 有关优缺点的更多详细信息。

关于android - 如何查询到 Firestore 子文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53257112/

相关文章:

javascript - 对象作为 Firestore 中的查询参数

flutter - 如何取消选择 flutter 中的单选按钮?

android - 任务 ':app:mergeLibDexDebug' 执行失败

android - 如何在 Flutter 中禁用 FlatButton 的飞溅突出显示?

c# - 如何在 xamarin 的 ListView 中使用 OnItemLongClick

android - Android Monkey 测试报告中的 "Event"是什么意思?

android - iOS 和 Android 上的 Firebase 邀请 - 是否可以在不显示 UI 的情况下生成共享链接?

android - Listview itemclick 不起作用

android - Android 中多个 Google 数据 API 的单个 Google 帐户 authtoken

firebase - 如何在服务器上验证 Admob Rewarded Video Ad?