В моем компоненте я делаю:
firebase() {
const userId = firebase.auth().currentUser.uid
return {
race: userRef.child(userId).child('races').child(this.raceKey)
}
},
mounted () {
console.info(this.$firebaseRefs.race.name)
}
Я могу получить доступ к значениям свойств гонки внутри моего шаблона компонента, но я не могу понять, как получить к ним доступ внутри созданного хука или метода. Значение всегда не определено. Как я могу это сделать?
Структура гонки:
race: {
name: "the name",
.....
}



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Это связано с тем, что запросы к базе данных реального времени Firebase являются асинхронными, и поэтому нет гарантии, что вы получите результат своего запроса в ловушке жизненного цикла, такой как mounted. Другими словами, привязка Firebase вашего объекта race не завершается до монтирования экземпляра.
См. Следующие сообщения для получения дополнительных сведений и возможных обходных путей с readyCallback:
https://github.com/vuejs/vuefire/issues/70 и https://github.com/vuejs/vuefire/issues/69
Решил с помощью функции readyCallBack. Проблема была установлена до того, как ссылка на firebase была загружена. Спасибо Renaud Tarnec за помощь.
firebase() {
return {
race: {
source: userRef.child(firebase.auth().currentUser.uid).child('races').child("-LMgzo_50TzlfJwCblDS"),
asObject: true,
cancelCallback: function () {},
readyCallback: function() {
console.info("Firebase race was loaded")
this.renderMap()
}
}
}
}