我从Firebase数据库的节点获取数据,然后在进行一些计算后我正在更新它。
我在节点js中使用Firebase SDK来执行此任务。
以下是代码:
app.get("/setBookedSpots", function (request, response) {
console.log("booked spots called");
var verifierEmail = request.query.verifierEmail;
var toBeBookedSpot = request.query.bookSpot;
console.log(toBeBookedSpot);
admin.auth().getUserByEmail(verifierEmail)
.then(function (userRecord) {
console.log("Successfully fetched user data:", userRecord.toJSON());
var verifierId = userRecord.uid;
var refToUserInformation = db.ref("user/" + verifierId);
refToUserInformation.child("Society_Name").on("value", function (snapshot) {
console.log(snapshot.val());
var SocietyName = snapshot.val();
refToSocietyBookingStatus = db.ref("Societies/" + SocietyName + "/Society_Parking_Details/Society_Parking_Status");
refToSocietyBookingStatus.child("Booked_Spots").on("value", function (snapshot) {
var Booked_Spots = snapshot.val();
console.log(Booked_Spots);
console.log("to be booked spot", toBeBookedSpot);
Booked_Spots = Booked_Spots.toString() + "," + toBeBookedSpot;
console.log("after booked spot", Booked_Spots);
refToSocietyBookingStatus.update({
"Booked_Spots": Booked_Spots
})
response.send({ "msg": "success" });
})
})
});
});
我正在获取预订的位置并根据请求参数更新它们。
当我点击它时,它会进行无限回调。我的意思是它继续递归附加,因为没有循环使它崩溃。
我尝试使用不同的变量作为数据库引用,以便它可能不会再次调用父事件,但仍然存在同样的问题。
这是服务电话网址:
http://localhost:8080/setBookedSpots?verifierEmail=kemarikun@gmail.com&bookSpot=A7
答案 0 :(得分:1)
在尝试了很多之后,我开始知道on("value")
事件正在执行,因为我正在更新同一个节点,我刚刚从中恢复了值,因此进行了递归并继续调用,因为它继续更新
以下是解决方法:将on("value")
替换为once("value")
让它只执行一次。
答案 1 :(得分:0)
您可以使用response.send({ "msg": "success" });
代替response.send(JSON.stringify({ msg: 'success'}));
更改此ansible-pull -U <repository> [options] [<playbook.yml>]