如何在方法(Vuefire)中访问 firebase prop 的值?

How to access firebase prop's values inside a method (Vuefire)?

在我的组件中,我正在做:

firebase() {
  const userId = firebase.auth().currentUser.uid
  return {
    race: userRef.child(userId).child('races').child(this.raceKey)
  }
},
mounted () {
  console.log(this.$firebaseRefs.race.name)
}

我可以在我的组件模板中访问比赛 属性 的值,但我不知道如何在创建的挂钩或方法中访问它们。该值始终未定义。我该怎么做?

比赛的结构是:

race: {
 name: "the name",
 .....
}

这是因为对 Firebase 实时数据库的查询是异步的,因此无法保证您在 mounted 这样的生命周期挂钩中获得查询结果。换句话说,您的 race 对象的 Firebase 绑定在安装实例之前没有完成。

有关 readyCallback 的更多详细信息和可能的解决方法,请参阅以下帖子:

https://github.com/vuejs/vuefire/issues/70 and 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.log("Firebase race was loaded")
        this.renderMap()
      }
    }
  }
}