firebase 如何根据类似BlaBlaCar游乐设施的应用程序组织FireStore收藏和文档

xvw2m8pv  于 2023-08-07  发布在  其他
关注(0)|答案(1)|浏览(85)

这是我第一次使用FireStore。我正在使用Flutter开发一个使用Firebase Auth的拼车应用程序,用户可以创建行程并提供类似于BlaBlaCar的乘车服务,其他用户可以发送加入乘车的请求。我不仅在决定要使用的潜在集合和路径方面遇到了困难,而且在如何构建它方面也遇到了困难。
在这个阶段,为了简单起见,我希望任何用户都能够看到创建的所有旅程,但当他们转到“我的游乐设施”页面时,他们只会看到他们参与的游乐设施。我会很感激任何形式的反馈。
以下是我考虑过的选择:
1.两个集合,“Users”和“Trips”。路径看起来像这样:users/uid和trips/tripsId,带有created_by字段x1c 0d1x
1.一个“用户”集合和一个“行程”子集合。路径对我来说似乎更有意义,这将是users/uid/trips/tripId,但我不知道其他用户如何访问他们的主页提要上的所有游乐设施。


我倾向于第一个选择两个集合。也非常开放的任何其他建议或帮助。- 谢谢-谢谢

tpgth1q7

tpgth1q71#

我希望任何用户都能看到创建的所有行程,但当他们转到“我的游乐设施”页面时,他们只能看到他们参与的游乐设施
我假设参与一次骑行要么是作者,要么是骑行的乘客。
我会选择两个集合:一个用于users,一个用于trips。在行程文档中,您可以添加两个字段:

  • createdBy与创建者的uid
  • participants:一个数组,用于存储作者的uid和所有其他参与者的uid(乘客)

这样,您可以轻松查询:

  • 所有的游乐设施
  • 用户创建的所有游乐设施
  • 使用arrayContains的用户参与的所有游乐设施。
  • (关于文档的最大大小限制为1 MiB,我想这不是问题,因为乘坐的乘客数量不应该太大,以至于Array字段大小使文档大于1 Mib!)*

请注意,第二种方法也可以使用子集合,因为您可以使用集合组查询进行查询,但根据您问题中的元素,我看不到任何技术优势。

相关问题