使用Firestore Increment,如果您在Cloud Function和Cloud Function is accidentally invoked twice?
中使用它,会发生什么情况?为确保函数在重试执行时正确运行,应通过实现它使其具有幂等性,以使事件即使传递时也能产生期望的结果(和副作用)多次。
例如该函数正在尝试将文档字段增加1
document("post/Post_ID_1").
updateData(["likes" : FieldValue.increment(1)])
因此,虽然增量可能是原子的,但不是幂等的吗?如果我们想使柜台成为幂等,我们仍然需要进行交易并跟踪谁是最后一个喜欢该职位的人?
答案 0 :(得分:1)
该函数每次调用都会增加一次。如果那是不可接受的,则您将需要编写一些代码来确定后续调用是否对您的情况有效。
有许多策略可以实现这一目标,并且您可以根据自己的需要选择一种。通常的策略是使用传递给函数的event ID in the context object来确定该事件过去是否已成功处理。也许这涉及将记录存储在Redis的另一个文档中,或者保存足够长的时间以防止重复(一个小时就可以了)。