Javascript firebase将值动态设置/初始化为零

Javascript firebase将值动态设置/初始化为零,javascript,firebase,firebase-realtime-database,google-cloud-functions,Javascript,Firebase,Firebase Realtime Database,Google Cloud Functions,我正在寻找一种使用http触发器设置/初始化值的好方法。 我所做的是引用firebase中的节点并获取数据,然后更新它 module.exports.initializeAnswers = functions.https.onRequest(async(req,res)=>{ try{ // i want to initalize each key await firebase.ref('/CurrentGame').once('value',snap

我正在寻找一种使用http触发器设置/初始化值的好方法。 我所做的是引用firebase中的节点并获取数据,然后更新它

module.exports.initializeAnswers = functions.https.onRequest(async(req,res)=>{
    try{
       // i want to initalize each key
        await firebase.ref('/CurrentGame').once('value',snapshot=>{
            snapshot.forEach((childSnapshot)=>{
                if(childSnapshot !=null){
                 childSnapshot.update(0)

                }
                return false
              });
        })
    }catch(e){
        console.info(e)
        return res.status(400).send({error:0})
    }
})
我正在寻找一种正确的方法,而不是通过“更新”功能


我想使用http触发器将每个值初始化为零

您可以使用
Firebase云函数
初始化http触发器上的值。选中

我知道您将在“answers”节点下有几个子节点(变量编号),而只有一个“rightAnswer”节点。如果我的理解是正确的,下面的代码将实现此目的:

exports.initializeAnswers = functions.https.onRequest((req, res) => {

    admin.database().ref('/CurrentGame/answers').once('value', snapshot => {

        const updates = {};
        snapshot.forEach((child) => {
            updates['/answers/' + child.key] = 0;
        });

        updates['/rightAnswer'] = 0;

        return admin.database().ref('/CurrentGame').update(updates);

    }).then(() => {
        res.status(200).end();
    }).catch((err) => {
        console.log(err);
        res.status(500).send(err);
    });

});

请注意,我已经编辑了我的答案:我已经以更正确的方式重新组织了承诺链接请注意,DataSnapshot是“数据库位置数据的不可变副本”,并且“不能修改,也永远不会更改”。看