为什么我在向 API 发送 POST 时收到"Posts validation failed"错误?



我有一个表单,我希望能够将其内容POST到我在后端连接的MongoDB服务器上,但是当我POST时,我会收到错误"Posts验证失败:post:值"的强制转换为字符串失败;{}";在路径";张贴";我不知道为什么。我刚开始反应,所以如果解决方案很简单,请原谅我。

这是我的表单页面:

import React from 'react';
import axios from 'axios';
export default class PostList extends React.Component {
state = {
post: '',
}
handleChange = event => {
this.setState({ post: event.target.value });
}
handleSubmit = event => {
event.preventDefault();
const post = {
post: this.state.name
};
axios.post('http://localhost:5000/posts', { post })
.then(res => {
console.log(res);
console.log(res.data);
})
}
render() {
return (
<div className="flex-container-home">
<div className="app">
<form onSubmit={this.handleSubmit}>
<label>
Post:
<input type="text" name="post" onChange={this.handleChange} />
</label>
<button type="submit">Add</button>
</form>
</div>
</div>
)
}
}

这是我的路由器:

const express = require("express")
const router = express.Router()
const Post = require('../models/posts')
router.post('/', async (req, res) => {
const post = new Post({
post: req.body.post,
});
try {
const savedPost = await post.save()
res.json(savedPost);
} catch (err) {
res.json({ message: err });
}
})
module.exports = router;

这是我的模式:

const mongoose = require('mongoose');

const PostSchema = mongoose.Schema({
post: {
type: String,
required: true
},
date: {
type: Date,
default: Date.now
}
})
module.exports = mongoose.model('Posts', PostSchema)

{ post }替换为post{ post }将给出

{
post: {
post: this.state.name
}
}

预期可能是

{
post: this.state.name
}

最新更新