Я пытаюсь вытащить данные (имя пользователя) из firebase. Я могу вытащить данные, но я не могу назначить данные чему-либо, кроме функции firebase. Как мне получить данные и использовать их? Я хочу просто обновить метку данными, которые я извлекаю.
getData(){
var userID = this.firAuth.auth.currentUser.uid;
var name;
console.info("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
}
});
});
}






Это потому, что API Firebase асинхронны. Это означает, что вы не можете получить данные. Вам нужно будет использовать его внутри функции.
В качестве альтернативы вы можете использовать async / await из ECMAScript 2017. Объявите свою функцию как async и используйте await для получения снимка:
async function getData(){
var userID = this.firAuth.auth.currentUser.uid;
var name;
console.info("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;
}
});
}
Попробуй
snap.child("name"), смотрим: firebase.google.com/docs/reference/js/…