用户比云功能更快

时间:2018-09-08 22:12:30

标签: android firebase google-cloud-firestore google-cloud-functions

我有一个Cloud Function,可以在用户使用FirebaseAuth(使用电子邮件和密码)注册后立即在Firestore中创建用户个人资料。

用户文档可能如下所示

users/{<uid>}

{
  username:"smith",
  status: "I love pineapple pizza",
  email:"smith@mail.com"
}

注册后,我为我的用户提供了更改其status属性的机会。问题在于用户可能比触发的云功能更快。这导致用户尝试更改 不存在的文档的问题。

如何确定云功能已被触发? 我唯一想到的就是从客户端检查文档是否存在(可能是循环)。 imo这不是一个很好的方法。

2 个答案:

答案 0 :(得分:3)

您可以attach a listener to the document。这样,onSnapshot应该会在创建文档时触发,此时您可以对其进行更新。

根据客户机和服务器需要执行的确切写入,还应考虑使写入成为幂等。因此:确保谁先行,所有写操作都会成功。

答案 1 :(得分:1)

检查文档是否已存在是您唯一的方法。您确实无法保证客户端和服务器之间将如何精确交互。如果您需要在客户端上执行某些操作,则它必须与服务器进行协调,而无需考虑何时确切触发云功能。

如果您希望某个函数在Firestore中创建文档时触发某些客户端代码,只需在该文档上设置侦听器即可(不要使用get()-它应该是侦听器)。创建文档时将触发该侦听器,并且您可以确保该功能是完整的