每次添加孩子时都会调用最佳Firebase Cloud函数

爸爸麦克

我希望每次将新用户添加到配对对象时都执行一个函数,以增加配对用户的数量。

exports.onCreateMatchmakingUser = functions.database.ref('/matchmaking/{$uid}').onCreate((snapshot, context) => {
    const currentMatchmakingAmount = snapshot.ref.parent.child('matchmakingAmount').val();
    return snapshot.ref.parent.update({matchmakingAmount: currentMatchmakingAmount+1});
});

我不想获取整个匹配对象,然后获取数字,我只想要matchmakingAmount。这是否snapshot.ref.parent会带来问题(它是否获取了整个匹配对象,或者仅获取对它的引用而不下载其数据)?如果可以的话,我该如何解决此问题并编写另一个仅更新数字而无需不必要下载的函数?

弗兰克·范普菲伦

snapshot.ref.parent.child('matchmakingAmount')你的代码不会从数据库中读取任何东西。相反,它仅建立matchmakingAmount对数据库中的引用您仍然需要使用明确地阅读它once("value")

let amountRef = snapshot.ref.parent.child('matchmakingAmount');
return amountRef.once("value").then((amount) => {
  let currentMatchmakingAmount = amount.val();
  return amountRef.set(currentMatchmakingAmount+1});
});

幸运的是,由于Firebase具有内置的increment运算符,因此如今有一种更简单的方法可以执行此操作。这样,以上内容可以归结为:

let amountRef = snapshot.ref.parent.child('matchmakingAmount');
amountRef.set(admin.database.ServerValue.increment(1));

这种方法还解决了您的方法中存在的竞争条件:如果两个人几乎同时触发了Cloud Function,那么两个写操作可能会互相干扰。通过使用服务器端increment,这种情况不会发生。

另请参阅:

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

每次点击都会调用该函数两次

每次使用变量时都会调用 PHP 函数吗?

每次输入更改都会调用 onClick 函数

从Firebase Cloud函数调用函数

每次在Windows 8/10而不是7上每次都会调用静态链接函数崩溃

每次选择参数时都会调用一次的静态变量和函数

每次屏幕发生变化时都会调用屏幕的构造函数

为什么每次更改TextInput时都会调用导出函数

为什么每次我迭代它们时都会调用向量中结构的析构函数?

为什么每次悬停时都会调用v-hover内部的函数

未调用 Firebase Cloud 函数

从 Compute Engine 调用 Cloud 函数

如何从Firebase Cloud Function调用异步函数

Firebase Cloud函数无限循环调用

每次调用都会完成PHP函数吗?

每次将子级添加到firebase数据库时,都会调用viewDidLoad

我正在订阅同一函数中的数据,每次我在 Angular 的文本框正确方法中键入内容时都会调用该函数?

如何在Firebase Cloud函数中调用导出的https Firebase Cloud函数?

如何从Python Cloud函数触发/调用Cloud Build

带有参数的Flutter Cloud函数调用

从Django视图调用Google Cloud函数

在Google Cloud Function中调用Promise函数

Firebase Cloud函数始终返回Null

Firebase Cloud函数中的Object.values()

用于删除用户的 Firebase Cloud 函数

使用Firebase Cloud函数更新托管文件

Firebase Cloud函数-sendToTopic()格式错误

Firebase 函数未针对 Cloud Firestore 触发

Firebase HTTP 请求的 Cloud Functions 函数