【发布时间】:2021-11-20 15:09:06
【问题描述】:
我目前正在开发一个使用 Firebase 的 Cloud Firestore 的 iOS 应用。
我想知道:同时(或几乎同时)将一些数据上传到多个 Firestore 文档的最佳方式(成本、效率和安全性)是什么?
* 我必须上传的数据包括以下内容:有两个用户(用户 A 是当前使用该应用程序的用户,用户 B 是用户 A 当前正在查看其个人资料的用户)。如果用户 A 保存用户 B 的个人资料,我必须将用户 B 的 UID 上传到用户 A 的 Firestore 文档。然后,我必须在用户 A 的 Firestore 文档中增加一个计数器。最后,我必须将用户 A 的 UID 添加到用户 B 的 Firestore 文档中。 - 请注意,对于 Firestore 文档,我的意思是文档字段或文档子集合。
选择是:
-
从客户端上传所有内容:在成本方面似乎是最好的方法:它不需要额外的 Cloud Functions 使用。我会创建一个批处理操作并从那里上传所有数据*。缺点是客户端必须能够访问多个不相关的集合和文档。
-
从客户端更新一个文档,然后从 Cloud Functions 更新其他所有内容:这种方法是效率和安全方面最好的方法;客户端仅将数据上传到用户的文档*,而不会访问不相关的集合和文档。此外,客户端只需上传之前方法中必须上传的一小部分数据,从而节省带宽和蜂窝数据/WiFi 使用量。缺点是 Cloud Functions 的使用量会增加,最终导致成本增加。
-
从客户端更新一个文档,从客户端更新 counter*,然后从 Cloud Functions 更新其他所有内容:这种方法在某种程度上是前两种方法的混合,因为我认为更新来自客户端的计数器更安全(Cloud Functions 的
.onWrite触发器可能会发生两次或更多次,从而多次增加计数器?)。
我的第一个想法是使用方法 2,因为它更加安全和高效,但我也希望在“浪费”太多时间编码错误之前获得其他人的建议。
我希望这不是任何形式的重复,因为我找不到任何可以足够具体地回答我的问题的内容。
任何建议将不胜感激。谢谢。
【问题讨论】:
标签: firebase google-cloud-firestore google-cloud-functions