2016-04-24 54 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

对不起坦率地说,它看起来像我写的代码错误。 正确的代码写在上面。 –