Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 函数的Firebase返回输出_Javascript_Firebase_Firebase Realtime Database - Fatal编程技术网

Javascript 函数的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

我是firebase的新手,正在尝试在函数中传递
$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几乎所有的东西都是异步的。

没问题,愉快的编码。