我的用例是,我想继续汇总数据库中的Firebase用户数,以便快速轻松地进行访问。为此,我有一个监听user.onCreate
的云函数,它只是使用原子FieldValue.increment
来递增文档中的字段。
代码如下:
exports.createProfile = functions.auth.user().onCreate(async user => {
return Promise.all([
addProfileToDatabase(),
function() {
db.collection('someCollection').doc(docId).update({
count: admin.firestore.FieldValue.increment(1)
)}
}
])
})
问题:数据库中的计数超过了Firebase 身份验证标签中显示的已身份验证的用户数。我会定期将其重置为正确的数字,然后慢慢增加。
我已经阅读了有关在文件上进行写限制的信息,但这反而会减少计数。但是,为什么数据库中的计数总是超过实际计数?
答案 0 :(得分:0)
在没有看到您的代码的情况下,我唯一可以想象的是您的函数不是幂等的。每个触发事件可能多次调用函数。这就是为什么您的人数超出预期的原因。
在documentation和this video中了解有关Cloud Functions幂等性的更多信息。