我处于Firebase写唤醒云功能的情况。
在云函数内部,我执行Orders
。
我的问题是,云功能保证使用.set()
策略。而不是at least once
。这意味着,有时会发生多个功能唤醒并写入完全相同的位置的情况。
我知道我可以使用事务,并询问“文档是否已存在”,如果不存在,则不执行任何操作。但是我想知道是否有一个标记,上面写着exactly one policy
。
到目前为止,我在文档中找不到任何内容。并且我希望由于最终用户延迟的原因而避免额外的set("data", exist=false)
。
请记住,云功能使用admin-sdk。这意味着,安全规则不能用作解决方案。
答案 0 :(得分:0)
我认为如果没有交易,您想要的东西是不可能的。
很有意思的是,倒数 是可能的:使用update()
,您可以只在文档已经存在时才允许写。
您已经说过:通常,这种类型的条件应包含在安全规则中。但是,由于Cloud Functions使用Admin SDK来执行其写入,因此它会绕过这些规则。