Javascript 防止firebase云函数中的竞争条件

Javascript 防止firebase云函数中的竞争条件,javascript,firebase,google-cloud-functions,race-condition,Javascript,Firebase,Google Cloud Functions,Race Condition,我使用全局变量构建firebase cloud函数,将答案递增到对象中。 问题是,当相同的用户试图在同一时间增加变量时,我正在寻找一种防止这种情况的方法 const functions = require('firebase-functions'); // global variable let answers = {'a':0, 'b':0,'c':0} exports.tryGetCount = functions.https.onRequest((req, res) =>

我使用全局变量构建firebase cloud函数,将答案递增到对象中。 问题是,当相同的用户试图在同一时间增加变量时,我正在寻找一种防止这种情况的方法

 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'})




});
--不要使用全局变量,而是使用事务

var ref=new Firebase('xxx');
var countRef=ref.child(“ans”).child(“-KGb1Ls gEErWbAMMnZC”).child(“count”);
countRef.事务(函数(currentCount){
返回电流计数+1;

});仅供参考在云函数中没有真正的“全局”变量。您的函数可能由多个服务器实例执行,每个服务器实例都有自己的“全局”变量。如果希望所有函数调用共享一些数据,则需要为这些数据指定一个集中的位置。对于Firebase项目,这通常是实时数据库或Firestore。