Firebase - 如何从 .once 调用中检索数据

Firebase - How to retrieve data from .once call

所以我正在尝试使用以下代码从 firebase 检索数据

loadblah(){
  var valueArray = [];
  valueArray = firebase.database().ref("/Users/johnny/files/").once('value', function(snapshot){
      console.log(snapshot.val()); //First output
      return snapshot.val();
  });

  console.log(valueArray); //Second output
}

无论如何,如您所见,我添加了一些 console.log 用于调试,它们得到了完全不同的结果。

第一个输出是我所希望的,例如 { fileOne: {title: blah, text: blah}, fileTwo... } 等等。但是对于第二个输出,我明白了。

知道如何在 snapshot.val() 中检索数据吗?任何帮助将不胜感激,我对此还很陌生。

编辑:如果你能以某种方式向我展示如何使用 .on 功能进行同步,那就更好了

对于那些第一次使用 Firebase 的人来说,您的困惑很常见。

Firebase once 调用是一个 异步 操作,因此,它只会在您的下载最终完成时完成 — long 你的 loadblah() 函数 return 之后。当它 执行 时,将调用提供的函数,您的数据将准备好在 snapshot.val() 中使用。

相反,存储在您的 valueArray var 中的 returned 值是一个 firebase.Promise,它提供了另一种等待此类值到达的方法。

您已经为 once 调用提供了 function,因此您现在可以忽略 promise 路由。换句话说,在传递给 once 的函数 中添加快照处理逻辑 (并忽略其 return 值)。