【发布时间】:2022-02-01 02:00:43
【问题描述】:
这是我发布的 React 代码:
const [nickname, setNickname] = useState('')
const [title, setTitle] = useState('')
const [content, setContent] = useState('')
const [agree, setAgree] = useState(false)
const [thepost, setThePost] = useState({})
const DoSubmit = async () => {
setHasAlert(false)
if (nickname == '' || nickname == null) {
setAlertContent("Please enter a Nickname!")
setHasAlert(true)
return
}
if (title == '' || title == null) {
setAlertContent("Please enter a Title!")
setHasAlert(true)
return
}
if (content == '' || content == null) {
setAlertContent("Cannot post an empty content!")
setHasAlert(true)
return
}
if (agree == false) {
setAlertContent("Please agree to the post rules!")
setHasAlert(true)
return
}
const data = {
title: title,
nickname: nickname,
content: content
}
setThePost(data)
await fetch('http://localhost:3001/posts', {
method: "POST",
body: thepost
})
.then(res => {
setIsError(false)
setAlertContent("Posted Successfully!")
setHasAlert(true)
console.log(res)
})
.catch(err => {
setAlertContent(err.message)
setHasAlert(true)
})
}
对于我的 Node/Express 后端:
router.post('/', async(req,res) => {
const post = new Post({
nickname: req.body.nickname,
title: req.body.title,
content: req.body.content
})
console.log(req.body)
try {
const savedPost = await post.save()
res.json(savedPost)
console.log(savedPost)
}
catch(err){
res.json({message:err})
}
})
但是,req.body 在我的后端是空的。在 React 上,它显示“成功发布!”它的状态是200(所以没有错误)。它只是不保存,也看不到从 React 发送的数据。
有什么想法吗?谢谢!
顺便说一句:在 React 上,所有字段(昵称、标题、内容)都完全在前端工作。
更新
我在反应中使用/posts,但在节点中使用/,因为我已经在节点的主要app.js 上使用了中间件,如下所示:
const postsRoute = require('./routers/posts')
app.use('/posts', postsRoute)
我有一个获取所有帖子的 React 页面:
const fetchData = async () => {
const data = await fetch('http://localhost:3001/posts')
const dataPost = await data.json()
setAllPosts(dataPost)
}
一切正常。
【问题讨论】:
标签: javascript node.js reactjs mongodb express