Firestore 云函数是否是一种比客户端更可靠的原子执行任务的方式?
Is a Firestore cloud function a more reliable way to perform tasks atomically than on the client?
我将 Firebase 用于我的移动应用程序的整个后端,我想知道这两者中哪一个是执行创建用户然后创建一批文档的任务的更可靠方法。
- 在客户端创建 Firebase 用户(使用 Firebase Auth),如果成功则在客户端执行 Firestore 批量写入以创建文档。
- 从客户端调用 Firebase 云函数来执行上述任务。
我的可靠性问题与网络有关。如果用户是在客户端上创建的,但无法创建文档,那么,那就不好了。但如果客户端能够调用云功能,那么我觉得网络可靠性在云环境中不是问题。如果任务在云中失败,那将是因为违反了我可以控制的错误(即错误的电子邮件格式、弱密码)。就我的目的而言,两者中哪一个更可靠?
我肯定会推荐使用选项 1。您应该使用 Firebase Auth 创建一个用户,然后创建一个名为“users”的集合并添加一个包含自动生成的用户 UID 的文档。这应该在您确保 Firebase 身份验证过程中没有错误之后发生。如果有,你应该只显示错误。如果您需要更具体的信息,请随时回复。
如果用户的连接不稳定,调用 Cloud Functions 与将它们直接写入 Firestore 的调用一样可能失败。主要区别在于 Firestore SDK 会在这种情况下自动重试写入操作,而使用 Cloud Functions 您必须自己实现。
我将 Firebase 用于我的移动应用程序的整个后端,我想知道这两者中哪一个是执行创建用户然后创建一批文档的任务的更可靠方法。
- 在客户端创建 Firebase 用户(使用 Firebase Auth),如果成功则在客户端执行 Firestore 批量写入以创建文档。
- 从客户端调用 Firebase 云函数来执行上述任务。
我的可靠性问题与网络有关。如果用户是在客户端上创建的,但无法创建文档,那么,那就不好了。但如果客户端能够调用云功能,那么我觉得网络可靠性在云环境中不是问题。如果任务在云中失败,那将是因为违反了我可以控制的错误(即错误的电子邮件格式、弱密码)。就我的目的而言,两者中哪一个更可靠?
我肯定会推荐使用选项 1。您应该使用 Firebase Auth 创建一个用户,然后创建一个名为“users”的集合并添加一个包含自动生成的用户 UID 的文档。这应该在您确保 Firebase 身份验证过程中没有错误之后发生。如果有,你应该只显示错误。如果您需要更具体的信息,请随时回复。
如果用户的连接不稳定,调用 Cloud Functions 与将它们直接写入 Firestore 的调用一样可能失败。主要区别在于 Firestore SDK 会在这种情况下自动重试写入操作,而使用 Cloud Functions 您必须自己实现。