【发布时间】:2021-02-04 15:51:00
【问题描述】:
所以我想使用 asyncdata 和 axios 从 db 获取,这是代码,问题是没有发送请求,我想知道是否有人可以帮我捕捉错误。
async asyncData({ $axios, store }) {
try {
let profile = await $axios.$get('/profile', store.state.auth.id)
return { profile }
} catch (error) {
console.log(error.message)
}
},
router.get('/profile', async (req, res) => {
const { userId } = req.body
try {
const profileUser = await User.findById(userId)
res.send(profileUser)
} catch (e) {
console.log(e)
res.status(400).json(e.message)
}
})
【问题讨论】:
-
你正在执行 $get..
req.body不会被设置,也不会包含userId -
我删除了 $ 但还是,还有其他语法错误吗?
-
任何类型的身份验证都应该在标头中完成,并在到达路由处理程序 router.get('/profile', authProtected, function(...` 等) 之前由中间件处理然后用 id 填充
req.user,然后你可以对不属于自己的配置文件执行await User.findById(req.user.id)..,然后它将作为参数传递,即/profile/:id,然后你将使用req.params.id(你可以抽象函数因此,如果您不想重复代码,它可以使用参数处理或默认拥有)。 -
, store.state.auth.id)看起来不对,请查看有关如何设置标头和设置不记名令牌等的文档,以及您是否为用户使用会话。应该是req.session.user.id
标签: mongodb express vue.js mongoose nuxt.js