我正在尝试从firebase中提取数据(用户名)。我能够将数据拉下来,但我无法将数据分配给firebase函数以外的任何内容。我该如何获取数据并使用它?我想简单地用我下拉的数据更新标签。
getData(){
var userID = this.firAuth.auth.currentUser.uid;
var name;
console.log("userID: " + userID);
this.name = "user";
this.firService.database.ref("/users").once('value').then(function (snapshot){
snapshot.forEach(snap => {
if (snap.key == userID){
this.name = snap.val().name; //this wont work
}
});
});
}
答案 0 :(得分:1)
那是因为Firebase APIs are asynchronous。这意味着您无法获取数据。您需要在函数内部使用它。
或者,您可以使用ECMAScript 2017中的async / await。将您的函数声明为async
并使用await
来检索快照:
async function getData(){
var userID = this.firAuth.auth.currentUser.uid;
var name;
console.log("userID: " + userID);
this.name = "user";
var snapshot = await this.firService.database.ref("/users").once('value');
snapshot.forEach(snap => {
if (snap.key == userID){
this.name = snap.val().name;
}
});
}