问题描述
问题:我想“更新”保存在mongoDB上的文档,因此我使用了Blog.findByIdAndUpdate(req.body.id,{ 'status': req.body.status })
。到这里,一切都很好。但是,只要我在其下添加res.redirect('/user/control_articles')
即可将用户重定向到另一个页面,它将在浏览器控制台中返回404。
//main.js
// pre_id comes from another variable,its ok
pub_btn.addEventListener(`click`,() => {
fetch(`/user/new_article`,{
method: `PATCH`,headers: {
'Content-Type': 'application/json'
},body: JSON.stringify({
'event': 'publish','status': 'publish','id': pre_id
})
})
.then(response => console.log(response))
.catch(err => console.log(err))
})
//router.js
router.patch(`/new_article`,userController.article_update)
//controller.js
exports.article_update = (req,res) => {
if(req.body.event === 'publish'){
Blog.findByIdAndUpdate(req.body.id,{ 'status': req.body.status })
res.redirect(`/user/control_articles`)
}
}
解决方法
我认为您忘了定义用于/ user / control_articles的GET端点
您应该像修补程序终结点一样定义它
//router.js
router.get(`/user/control_articles`,userController.articles_get)
router.patch(`/new_article`,userController.article_update)
如果您没有忘记,请尝试等待,直到使用async / await语法解决了诺言
//controller.js
exports.article_update = async (req,res) => {
if(req.body.event === 'publish'){
await Blog.findByIdAndUpdate(req.body.id,{ 'status': req.body.status })
res.redirect(`/user/control_articles`)
}
}