您正在更新您正在阅读的同一节点.这会导致on("value"
再次触发回调.然后依次写入一个新值,再次触发回调.并且一直持续到运行时用尽调用堆栈空间.
最简单的解决方案是使用once()
而不是on()
:
var ref = database.ref('users'); try{ ref.orderByChild('username').equalTo(usrID).once("value", (snapshot)=> { if(!snapshot.val()){ checker = true; } if(snapshot.val()){ admin.database().ref('users/' + usrID + '/currentLocation').update({ lat: usrCoords.lat, long: usrCoords.long }); return res.json({msg: 'user coords changed', success: true}); // checker = false; } // res.json({msg: 'username is not in D.B', success: false}); }); }catch(ex){ console.log('ex /updateCoords = '+ex); }