我使用全局变量构建 firebase 云函数,将答案递增到对象中。 问题是当相同的用户试图同时增加变量时,我正在寻找一种方法来防止出现这种情况。
const functions = require('firebase-functions');
// global variable
let answers = {'a':0, 'b':0,'c':0}
exports.tryGetCount = functions.https.onRequest((req, res) => {
// console.log(req.body)
let userAnswer = req.body.answer;
let userInformation = req.body.userInfo;
if(answers.hasOwnProperty(userAnswer)){
answers[userAnswer]++; // increment the answer
return res.send({answers:answers})
}
return res.status(400).json({error:'invalid answer propertu'})
});
最佳答案
-- 不使用全局变量,而是使用事务
https://firebase.google.com/docs/database/web/read-and-write#save_data_as_transactions
var ref = new Firebase('xxx');
var countRef = ref.child("ans").child("-KGb1Ls-gEErWbAMMnZC").child('count');
countRef.transaction(function(currentCount) {
return currentCount + 1;
});
关于javascript - 防止 Firebase 云功能中的竞争条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49841515/