0

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

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",
 .....
}
4

2 回答 2

1

这是因为对 Firebase 实时数据库的查询是异步的,因此无法保证您在诸如mounted. 换句话说,您的race对象的 Firebase 绑定不会在实例挂载之前完成。

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

https://github.com/vuejs/vuefire/issues/70https://github.com/vuejs/vuefire/issues/69

于 2018-09-19T15:56:54.303 回答
0

使用 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()
      }
    }
  }
}
于 2018-09-20T10:35:15.820 回答