Javascript firebase将值动态设置/初始化为零
我正在寻找一种使用http触发器设置/初始化值的好方法。 我所做的是引用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
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是“数据库位置数据的不可变副本”,并且“不能修改,也永远不会更改”。看