将数据上传到Firestore中的多个文档的最佳方法



我目前正在开发一个使用Firebase的Cloud Firestore的iOS应用程序。

我想知道:什么是最好的方式(成本,效率和安全方面)上传一些数据到多个Firestore文档同时(或几乎同时)?

*我需要上传的数据包括以下内容:有两个用户(用户A是当前使用该应用的用户,用户B是当前被用户A看到的用户),如果用户A保存了用户B的配置文件,我必须将用户B的UID上传到用户A的Firestore文档中。然后,我必须在用户a的Firestore文档中增加一个计数器。最后,我必须将用户A的UID添加到用户B的Firestore Document中。-请注意,对于Firestore文档,我指的是文档字段或文档子集合。

选项为:

  • 从客户端上传所有内容似乎是最好的方法,成本方面:它不需要额外的云功能的使用。我会创建一个批处理操作,并上传所有的数据从那里*。缺点是客户机必须能够访问多个不相关的集合和文档。

  • 从客户端更新一个文档,然后从Cloud Functions更新其他所有文档:这种方法在效率和安全性方面是最好的;客户端上传数据到用户的文档*,没有访问无关和文档集合。此外,客户端只需要上传之前方法中必须上传的一小部分数据,从而节省带宽和蜂窝数据/WiFi使用量。缺点是云功能的使用会增加,最终导致更多的成本。

  • 从客户端更新一个文档,从客户端更新计数器*,然后从云函数更新其他所有内容:此方法在某种程度上是前两者之间的混合,因为我认为从客户端更新计数器更安全(云功能的.onWrite触发器可能发生两次或更多次,增加计数器多次?)。

我的第一个想法是使用方法2,因为它更安全、更有效,但我也想在"浪费"之前听听别人的建议。写错误代码花了太多时间。

我希望这不是任何形式的重复,因为我找不到任何能足够具体地回答我的问题的东西。

如有任何建议将不胜感激。谢谢你。

我会遵循第三种方法:从客户端更新当前的用户集合(saved_profiles集合和counter字段),这是私有的,只能由这个用户访问(配置Firestore安全规则),并更新其他用户的集合(users_who_saved_my_profile)与触发的云功能。由于这些操作不受安全规则的控制,因此它们可以访问数据库的任何部分。这样就不会向任何用户授予不必要的权限。

相关内容

最新更新