我有类似于这里的按钮A3。我想从我的数据库中检查座位的可用性,并在 if 循环中相应地执行此操作。但是我在火力基准参考下方的所有函数都不起作用。
我的数据库是
My web (app)
|
Seats(node)
|
Status (node)
|
A1 - available (value)
A2 - available (value)
A3 - available (value)
A4 - available (value)
我的 js 脚本是
function A3(){
var newseat = document.getElementById("A3");
var firebaseStatusRef = firebase.database().ref().child("Status");
var firebaseSeatStatusRef = firebaseStatusRef.child("A3");
firebaseSeatStatusRef.on('child_added', snap => {
var seatStatus = snap.val();
});
if (firebaseSeatStatusRef=="available") {
newseat.className="booked-seat";
newseat.setAttribute("class" , "booked-seat");
firebaseStatusRef.child("A3").set("booked");
var fill = newseat.value;
document.getElementById("fill").value += fill + " ";
Seat();
} else {
newseat.style.backgroundColor = 'seat';
newseat.setAttribute("class" , "seat");
var fill = newseat.value;
document.getElementById("fill").value -= fill + " ";
BookedSeat();
}
}
您的检查归结为:
var firebaseStatusRef = firebase.database().ref("Seats/Status");
var firebaseSeatStatusRef = firebaseStatusRef.child("A3");
if (firebaseSeatStatusRef=="available") {
这在Firebase实时数据库API中毫无意义,因为您尚未从数据库中读取值。为此,您需要附加一个侦听器,然后根据该值检查您获得的快照。像这样:
firebaseSeatStatusRef.on('value', snap => {
var seatStatus = snap.val();
if (seatStatus == "available") {
...
}
});
请注意,任何需要访问数据库中数据的代码都必须位于回调块内。
这是与Firebase实时数据库的相当基本的交互,因此您最好研究Firebase文档以获取值,并可能使用Firebase代码实验室。