Javascript 函数的Firebase返回输出
我是firebase的新手,正在尝试在函数中传递Javascript 函数的Firebase返回输出,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我是firebase的新手,正在尝试在函数中传递$variable,以检查$variable是否存在 function ifExistWaybillNo(waybill_no) { var databaseRef = firebase.database().ref('masterlist'); databaseRef.orderByChild("waybill_no").equalTo(waybill_no).on('value', function(snapshot){ ale
$variable
,以检查$variable
是否存在
function ifExistWaybillNo(waybill_no)
{
var databaseRef = firebase.database().ref('masterlist');
databaseRef.orderByChild("waybill_no").equalTo(waybill_no).on('value', function(snapshot){
alert(snapshot.exists()); //Alert true or false
});
}
上述函数工作正常,但当我更改alert(snapshot.exists())时
到返回snapshot.exists()代码>它不工作。它只返回undefined,应该返回true
或false。
我该怎么做?提前感谢Firebase所做的几乎所有事情都是异步的。调用函数ifExistWaybillNo
时,它希望立即返回,而不是等待。因此,在您的数据库ref.orderByChild(“运单号”)
完成之前,调用函数的语句已经确定返回值是未定义的
解决这个问题的方法是通过传递回调函数并在那里使用return。对此的确切解释在这里做得非常好:
您只需要重命名一些函数并遵循其中使用的语法
开始:
function(waybill_no, callback) {
databaseRef.orderByChild("waybill_no").equalTo(waybill_no).on('value', function(snapshot) {
var truth = snapshot.exists();
callback(truth); // this will "return" your value to the original caller
});
}
记住,Firebase几乎所有的东西都是异步的。没问题,愉快的编码。