首页 > 解决方案 > 使用实时 Firebase 的 If-else 条件

问题描述

是否可以在 firebase 的实时结果中使用 if/else?我的数据库如下所示:

在此处输入图像描述

以前我已经尝试过,如果两个“waktu”的结果相同,则它可以工作,== 最近。

但我想要的是如果值之一“waktu”==最近,那么“Hasil”= 0,如果两个“时间”都不等于“最近”,那么值“Hasil”= 0。

if ("Recent" == (one of) "waktu") {
   Hasil : "1";
} else {
   Hasil : "0";
}

这是我之前的代码,如果两个“waktu”值==最近,则值“Result”= 1。但我想要“waktu”的一个值==最近。

      var recent = "";
      var root = firebase.database().ref();

      root.child("Time").on('value', (snapshot) => {
        recent = snapshot.val().Recent;
      });

      root.child("jadwal-pakan").on('value', (snapshot) => {
        snapshot.forEach(jadwal_waktu => {
          if (jadwal_waktu.child("waktu").val() == recent) {
            root.update({
              Keadaan: {
                Hasil: 1
              }
            });
          } else {
            root.update({
              Keadaan: {
                Hasil: 0
              }
            });
          }
        })
      })

谢谢 :)

标签: javascriptfirebaseif-statementfirebase-realtime-database

解决方案


问题在于代码执行的时间。由于所有数据都是从 Firebase 异步加载的,因此您recent = snapshot.val().Recent可以在运行后if (jadwal_waktu.child("waktu").val() == recent) {运行。

为确保这一点得到保证,您需要像这样嵌套侦听器:

root.child("Time").on('value', (snapshot) => {
  recent = snapshot.val().Recent;
  root.child("jadwal-pakan").on('value', (snapshot) => {
    snapshot.forEach(jadwal_waktu => {
      if (jadwal_waktu.child("waktu").val() == recent) {
        root.update({
          Keadaan: {
            Hasil: 1
          }
        });
      } else {
        root.update({
          Keadaan: {
            Hasil: 0
          }
        });
      }
    })
  })
});

现在,语句不会乱序执行,并且if (jadwal_waktu.child("waktu").val() == recent) {会按预期工作。


推荐阅读