【发布时间】:2021-03-30 22:32:19
【问题描述】:
我见过一些类似的问题,但它们似乎与我的情况不符。
当我登录 this.$store.state.account 时,我得到了预期的结果
{__ob__: Nt}
user: Object
favorites_playlist: (...)
firebaseID: (...)
spotifyID: (...)
但是,当我console.log(this.$store.state.account.user) 时,用户对象消失了! user 中的所有嵌套属性都返回 undefined,尽管它们在上面的记录非常好
console.log(this.$store.state.account.user)
{__ob__: Nt}
__ob__: Nt {value: {…}, dep: vt, vmCount: 0}
__proto__: Object
这是我的组件内部调用对象的方法
async connectToSpotify() {
console.log("User Profile: ", this.user)
var firebaseID = await this.$store.dispatch("signInToFirebase")
var authID = await this.$store.dispatch('connectToSpotify')
Vue.set(this.$store.state.spotify, "authId", authID)
var userProfile = await this.$store.dispatch("fetchUserDataFromSpotify", authID)
userProfile["firebaseID"] = firebaseID
this.$store.dispatch("bindCurrentUser", userProfile.spotifyID)
console.log("this.$store.state")
console.log(this.$store.state);
console.log("this.$store.state.account")
console.log(this.$store.state.account);
console.log("this.$store.state.account.user")
console.log(this.$store.state.account.user);
console.log("this.$store.state.account.user.favorites_playlist")
console.log(this.$store.state.account.user.favorites_playlist);
// console.log(this.$store.state.account.user.firebaseID);
var favorites_playlist = this.$store.state.account.user.favorites_playlist
var playlistID = await this.$store.dispatch("createFavoritesPlaylist", [authID, userProfile.spotifyID, favorites_playlist])
console.log(`PlaylistID: ${playlistID}`);
userProfile["favorites_playlist"] = playlistID
console.log(this.$store);
return db.ref(`users/${userProfile.spotifyID}`).update(userProfile)
},
这是我的帐户模块中将用户绑定到 firebase 的操作
const state = () => ({
//user: { voted_tracks: {}, favorited_tracks: {}, favorites_playlist: null, authID: null}
user: {},
})
const actions = {
bindCurrentUser: firebaseAction(({ bindFirebaseRef }, id) => {
return bindFirebaseRef('user', db.ref('users').child(id))
}),
}
除了 this.$store.state.account.user 通过 Vuexfire 绑定到数据库引用之外,不确定还有哪些相关信息。 store 被注入到根组件中
【问题讨论】:
-
这太棒了!似乎我的数据在我需要的时候还没有加载,看看我如何重构我的代码来解决这个问题并重新签入
-
道歉,如果这是一个愚蠢的问题,但你的意思不是在
firebaseAction之前添加return吗?它返回一个错误,应该如何编辑这一行?return bindFirebaseRef('user', db.ref('users').child(id))
标签: javascript firebase vue.js firebase-realtime-database vuex