javascript - 在 Express 中回复两次
问题描述
我的反应代码
<form action="/ContactUs/FormData" method="POST">
...
</form>
和
handleSubmit(){
fetch('/ContactUs/FormData')
.then((results)=>results.json())
.then((result)=>{
if(result.name==='ErrorOccured'){
this.setState({
display: 'An Error Occured. Please try again!'
});
}
else{
this.setState({
display: 'We have recorded your response '+result.name+ '. Please note your ID: '+ result.id
});
}
})
}
我的快递代码
app.post("/ContactUs/FormData",function(req,res){
}
formResponse.save((err,data)=>{
if(err){
res.write(JSON.stringify({"name":"ErrorOccured"}));
}
else{
res.write(JSON.stringify(data));
}
res.redirect("/ContactUs");
});
我希望当数据提交到“/ContactUs/FormData”时,应该使用 Mongoose 保存它,然后应该呈现表单页面(一个 post 方法中的两个响应请求)。
我如何实现这一点,即页面也被渲染并且一些 json 数据也被发送到 React。
解决方案
Express 不应该呈现表单页面。ReactJS 应该。Express 必须只回复 React 呈现表单页面所需的任何数据。
你的场景应该是:
- React 发送表单数据
- Express 将其保存到数据库中
- 保存后,检索呈现表单页面所需的任何数据
- 在 express 中,将表单页面的数据和保存操作中的成功/错误消息组合到一个 JS 对象中。
- Express 应该通过
res.write
(无重定向)将此单个对象发送到 React - React通过显示 Express 发送的数据读取答案、显示任何错误消息和/或呈现表单页面
请注意,Express 可以返回任何类型的数据,包括让 React 知道接下来要渲染哪个页面的信息。
推荐阅读
- python - 我有一个 json 格式的数据文件。如何找到并打印前 20 个 eij_max 值和相关的 pretty_formula?我正在使用蟒蛇
- css - 悬停时标题文本颜色更改
- php - Laravel 429 请求过多 - 从数据库刷新时间的其他方式
- apk - 为什么 APK 没有在 Monaca.io 中加载
- sql-server - 带有 WAITFOR DELAY 的过程直到最后才会执行
- arrays - Arduino:将字符串数组转换为字节数组
- python - 无法在 Selenium 中删除 headers-first XPATH
- bash - Matlab parfor 使用的内核数少于分配的内核数
- python - python colab笔记本不打印?
- python - 有没有办法可以打印我在单行上转换的输入的输出?