2016-04-24 76 views
0

問題:數據始終更新爲4350,
並且警報保持彈出。Firebase數據未正確更新

代碼:

// 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"); 
    } 
} 

我已經嘗試了很多方法,但代碼仍然沒有工作。
很抱歉,如果我不問正確的問題,順便說一句

回答

0

這是一個有點不清楚你的問題是什麼,但一個受過教育的猜測是,它歸結爲你的代碼的這個片斷:

// 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 
    } 
}); 
+0

對不起坦率地說,它看起來像我寫的代碼錯誤。 正確的代碼寫在上面。 –