【发布时间】:2019-02-24 07:44:07
【问题描述】:
我有一个 API:
getFollowers(following) {
return axios.post(`${options.serverUrl}/follower/get-followers`, {following})
},
还有一个使用这个方法的组件:
created () {
this.loadFollowers()
},
async loadFollowers () {
const response = await services.getFollowers(this.$store.state.profile._id)
console.log('followers', response)
this.followers = response.data
},
后端:
router.post('/follower/get-followers', (req, res) => {
const query = {
following: req.body.following
}
Follower.find(query)
.populate('follower', 'firstname lastname avatar id _id')
.then(result => res.send(result))
.catch(err => console.error(err))
})
问题是当页面热重新加载(保存更改后),或者当我从router-link打开这个组件时,这个方法可以正常工作,但是如果我从浏览器重新加载页面,它就不起作用;它返回一个空数组。我已经尝试了所有生命周期挂钩。
【问题讨论】:
-
服务返回的是空数组吗?
-
是的。如果我从 borwser (ctrl+R, F5) 重新加载页面,response.data 看起来像 [ob: Observer]。但是,如果我只是更改组件中的某些内容并保存它,在热重载后我得到 [{...}, ob: Observer],其中 {...} 期待对象。跨度>
-
仅从问题无法确定根本原因,似乎问题出在服务(后端)中。会不会是身份验证问题?例如:重新加载时,您的应用未发送适当的标头,可能是因为某些身份验证令牌不可用。
-
我用后端代码更新了问题。如您所见,没有特殊检查。由于未知原因,Vue 不等待操作结束并返回空数组 .__.
-
你试过
loadFollowers: async function ()而不是async loadFollowers ()吗? github.com/vuejs/vue/issues/3308