【问题标题】:Firebase data is not updated properlyFirebase 数据未正确更新
【发布时间】:2016-04-25 17:08:36
【问题描述】:

问题:数据总是更新为 4350,
并且警报不断弹出。

代码:

// Get no antrian function
function getNoAntri(tipe, username, name) {
  // Define firebase URL
  var faskesRef = new Firebase("https://cepatsembuh.firebaseio.com/" + tipe + "/faskes/" + username);

  // Log firebase URL
  console.log('Url :' + "https://cepatsembuh.firebaseio.com/" + tipe + "/faskes/" + username);

  // Warn user that this fiture need internet
    alert('Fitur ini membutuhkan internet untuk mengambil data');

  // Confirmation
  alert("Mohon konfirmasi ulang");
  var nama = prompt("Masukan nama"),
  nik = prompt("Masukan NIK:");
  if (nama != "" || nik.length != 16) {
    var pasien = new Firebase("https://cepatsembuh.firebaseio.com/" + tipe + '/pasien/');
    // Initialize data
    faskesRef.on("value", function(snapshot) {
      // Update variables
      var data = snapshot.val().antrian,
      one = 1,
      sum = data + one;

      // Update nomor antrian
      faskesRef.update({
        nama: name,
        antrian: sum
      });

      // Print data
      alert('No antrian: ' + snapshot.val().antrian);

      // Push data to firebase
      pasien.push().set({
        nama: nama,
        nomor_antrian: snapshot.val().antrian
      })
    });
  } else {
    // Error message
    alert("Input anda tidak valid. \n Anda tidak bisa mendapatkan nomor antrian");
  }
}

我尝试了很多方法,但代码仍然无法正常工作。
对不起,如果我没有问一个正确的问题顺便说一句

【问题讨论】:

    标签: javascript cordova firebase firebase-realtime-database


    【解决方案1】:

    有点不清楚您的问题是什么,但有根据的猜测是它归结为您的代码片段:

    // Push input value to firebase
    pasien.push().set({
      nama: nama,
      nik: nik,
      lokasi: lokasi
    });
    
    window.location.href = 'option/' + 'available.html';
    

    将数据写入 Firebase 是一项异步操作。调用set()开始该操作,但到设置window.location时,写操作还没有完成。

    解决方法是等待写入操作完成后再离开,您可以使用Firebase completion listener

    // Push input value to firebase
    pasien.push().set({
      nama: nama,
      nik: nik,
      lokasi: lokasi
    }, function(error) {
        if (!error) {
            window.location.href = 'option/' + 'available.html';
        }
        else {
            // TODO: handle error
        }
    });
    

    【讨论】:

    • 对不起,坦率地说,我好像写错了代码。正确的代码写在上面。
    猜你喜欢
    • 2014-01-09
    • 1970-01-01
    • 1970-01-01
    • 2014-09-29
    • 2011-10-08
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多