【问题标题】:Firebase return output from functionFirebase 从函数返回输出
【发布时间】:2016-09-28 21:58:56
【问题描述】:

我是 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()); 更改为return snapshot.exists(); 时,它不起作用。它只是返回 undefined,应该返回 truefalse.

我该怎么做?提前谢谢

【问题讨论】:

    标签: javascript firebase firebase-realtime-database


    【解决方案1】:

    Firebase 所做的几乎所有事情都是异步的。当您调用函数ifExistWaybillNo 时,它期望立即返回,而不是等待。所以在你的databaseRef.orderByChild("waybill_no")完成之前,调用函数的语句已经决定返回是undefined

    解决这个问题的方法是传递一个回调函数并在那里使用返回。对此的确切解释在这里做得很好:return async call

    你只需要重命名一些函数并遵循那里使用的语法。

    开始:

    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 都是异步的。

    【讨论】:

    • 没问题,愉快的编码。
    猜你喜欢
    • 1970-01-01
    • 2019-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多