我想访问我的Firebase数据库,检索一个值,然后将其分配给一个变量,以供以后在代码中使用。
<script src="https://www.gstatic.com/firebasejs/5.5.0/firebase.js"></script>
var config = {
apiKey: "",
authDomain: "",
databaseURL: "",
projectId: "",
storageBucket: "",
messagingSenderId: ""
};
firebase.initializeApp(config);
database=firebase.database();
var ref = database.ref('test');
var firebaseMsg ='';
ref.on('value',function(snap){
//console.log(snap.val());
firebaseMsg=snap.val();
});
console.log(firebaseMsg);
我的firebase数据库如下:
{
"test" : "Hello from my database!"
}
控制台日志生成一个空字符串,看来ref.on回调中的分配无效。
答案 0 :(得分:1)
发生这种情况是因为对Firebase数据库的查询是异步的:您的console.log()
在之前执行,并返回由on()
方法返回的回调函数。
以下将起作用:
ref.on('value',function(snap){
//console.log(snap.val());
firebaseMsg=snap.val();
console.log(firebaseMsg);
});
您可能已经注意到,因为您注释掉了console.log(snap.val());
行。
这意味着,例如,您只能从回调函数中更新应用程序UI(以反映数据库中的更改)。