如何使用 JavaScript 从 Firebase in web 检索数据



我有类似于这里的按钮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代码实验室。

最新更新