Как получить доступ к значениям опоры firebase внутри метода (Vuefire)?

В моем компоненте я делаю:

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",
 .....
}
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
243
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Это связано с тем, что запросы к базе данных реального времени 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()
      }
    }
  }
}

Другие вопросы по теме