设置Firestore对象(如果不存在)

时间:2019-04-16 07:49:17

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

我处于Firebase写唤醒云功能的情况。 在云函数内部,我执行Orders

我的问题是,云功能保证使用.set()策略。而不是at least once。这意味着,有时会发生多个功能唤醒并写入完全相同的位置的情况。

我知道我可以使用事务,并询问“文档是否已存在”,如果不存在,则不执行任何操作。但是我想知道是否有一个标记,上面写着exactly one policy

到目前为止,我在文档中找不到任何内容。并且我希望由于最终用户延迟的原因而避免额外的set("data", exist=false)

请记住,云功能使用admin-sdk。这意味着,安全规则不能用作解决方案。

1 个答案:

答案 0 :(得分:0)

我认为如果没有交易,您想要的东西是不可能的。

很有意思的是,倒数 是可能的:使用update(),您可以只在文档已经存在时才允许写。

您已经说过:通常,这种类型的条件应包含在安全规则中。但是,由于Cloud Functions使用Admin SDK来执行其写入,因此它会绕过这些规则。