Node.js POST请求错误:路径'title'和'body'是必需的

Node.js POST请求错误:路径'title'和'body'是必需的,node.js,reactjs,express,mern,Node.js,Reactjs,Express,Mern,我试图向我的服务器发出一个POST请求,创建一个新的POST(标题,正文)并将其保存在db中,我收到一个200状态码,但是标题和正文没有插入到POST中 更新:我刚刚将控制器方法中的return res.status(400).json({error:errorHandler(err)})更改为res.send(err),现在我收到一条清晰的错误消息:标题和正文路径是必需的 我怎样才能解决这个问题 CreatePost.js class CreatePost extends React.Com

我试图向我的服务器发出一个POST请求,创建一个新的POST(标题,正文)并将其保存在db中,我收到一个200状态码,但是标题和正文没有插入到POST中

更新:我刚刚将控制器方法中的
return res.status(400).json({error:errorHandler(err)})
更改为
res.send(err)
,现在我收到一条清晰的错误消息:标题和正文路径是必需的

我怎样才能解决这个问题

CreatePost.js

 class CreatePost extends React.Component {
     constructor(props) {
         super(props)
     
         this.state = {
              title: '',
              body: ''
         }
     }
     
     changeHandler = (e) => {
         this.setState({ [e.target.name]: e.target.value })
     }
     

     submitHandler = e => {
         e.preventDefault()
         axios.post(`${API}/blog/post/create`, this.state)
         .then(response => {
             console.log(response)
         }).catch(error => {
             console.log(error)
         })
     }
    render() {
        const {title, body} = this.state
        return (
            <div>
                <form onSubmit={this.submitHandler}>
                <input type="text" name="title" 
                onChange={this.changeHandler} value={title} />
                <input type="text" name="body"
                onChange={this.changeHandler} value={body}/>
                <button type="submit">Submit</button>
                </form>
            </div>
        )
    }
}

export default CreatePost
routes/posts.js

router.post('/blog/post/create', create);
exports.create = (req, res) => {
  const {title, body} = req.body
  let post = new Post({title, body})

  post.save()
  .then(response => {
  res.send(response)
    .catch(err => {
      res.send(err)
})
})
}

您是否尝试从或(我最喜欢的)调用端点以验证它是否已启动并正在运行?这是一种独立于代码测试端点的好方法

由于代码中没有使用HTTP404,我怀疑它来自Express的内部机制

顺便说一下,API uri中的动词POST和“create”部分说明了相同的意图。您可以去掉这个创建部件。这被认为是最重要的问题之一。

试试这个

axios({ url: `${API}/blog/post/create`, method: 'POST', data: this.state})

我已经解决了这个问题。我并没有将标题和正文插入到post对象中

我从
req.body
解构了
标题
正文

const{title,body}=req.body

并将数据插入对象
let post=new post({title,body})

controllers/posts.js

router.post('/blog/post/create', create);
exports.create = (req, res) => {
  const {title, body} = req.body
  let post = new Post({title, body})

  post.save()
  .then(response => {
  res.send(response)
    .catch(err => {
      res.send(err)
})
})
}

谢谢你的回答,但这对我不起作用@凯文·利特感谢你的回答。我在《邮递员》中也收到了404错误。谢谢,我将从uri中删除
create