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 值)。
所以我正在尝试使用以下代码从 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 值)。