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

时间:2017-05-18 03:09:00

标签: javascript firebase react-native firebase-realtime-database react-native-ios

所以我尝试使用以下代码“

从firebase中检索数据
Debug.WriteLine($@"Operation time: {elapsedMilliseconds}ms");

无论如何,正如你所看到的,我已经添加了一些用于调试的console.log,它们会得到完全不同的结果。

First Output是我所希望的,例如[Conditional("DEBUG")] [__DynamicallyInvokable] public static void WriteLine(string message, string category) { TraceInternal.WriteLine(message, category); } 等等。但对于第二个输出,我明白了。

enter image description here

知道如何在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 } 中检索数据吗?任何帮助都会非常感激,我对此很新。

编辑:更好的是,如果你能以某种方式向我展示如何使用.on功能来同步那些非常棒的东西

1 个答案:

答案 0 :(得分:1)

对于第一次使用Firebase的人来说,这种混淆很常见。

Firebase once调用是异步操作,因此,只有在您的下载最终完成后才能完成 - 长之后 您的loadblah()函数返回。 时,将调用提供的函数,您的数据可以在snapshot.val()中使用。

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

您已为function电话提供once,因此您暂时可以忽略承诺路线。换句话说,将传递给once的函数中的快照处理逻辑添加到中(并忽略其返回值)。