当我res.redirect`/ relative / url`时,收到的响应是PATCH 404 Not found如何解决这个问题?

问题描述

问题:我想“更新”保存在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`)
  }
}

enter image description here

解决方法

我认为您忘了定义用于/ 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`)
  }
}