我正在编写一个使用React作为前端的程序,以及一个用于后端的Express/Node API,然后在MongoDB数据库中执行CRUD操作。现在,我正在使用本地JS抓取()API在我的前端执行GET/POST操作。GET请求工作正常,但是我的POST请求似乎不工作。在我的前端,我有一个表单和一个表单提交处理程序,如下所示:
handleSubmit(){
let databody = {
"name": this.state.nameIn,
"quote": this.state.quoteIn
}
return fetch('http://localhost:5002/stored', {
method: 'POST',
body: JSON.stringify(databody),
headers: {
'Content-Type': 'application/json'
},
})
.then(res => res.json())
.then(data => console.log(data));
}
render(){
return (
<div>
<form onSubmit={this.handleSubmit}>
<label>
Name
<input type="text" name="name" value={this.nameIn} onChange={this.handleNameChange}/>
</label>
<label>
quote
<input type="text" name="quote" value={this.quoteIn} onChange={this.handleQuoteChange}/>
</label>
<input type="submit" value="Add to DB" />
</form>
</div>
);
}
然后在端口5002上的Express API上,我有:
app.post('/stored', (req, res) => {
console.log(req.body);
db.collection('quotes').insertOne(req.body, (err, data) => {
if(err) return console.log(err);
res.send(('saved to db: ' + data));
})
});
然而,当表单提交时,请求在Express API上显示为空体。控制台。日志显示。身体只是一个{}我想知道我做错了什么?
如果您使用Express 4.16或更高版本,您可以使用express.json(),它将尝试解析请求正文的JSON并将其保存到req.body,但前提是头“内容类型:应用程序/json”与请求一起发送:
const app = express();
app.use(express.json()); // Parses request body if type is json. Saves to req.body.
使用body解析器
在您的快速代码中添加:
global.bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({
extended: true,
limit: '50mb',
parameterLimit: 100000
}))
app.use(bodyParser.json({
limit: '50mb',
parameterLimit: 100000
}))
app.post('/stored', (req, res) => {
console.log(req.body);
db.collection('quotes').insertOne(req.body, (err, data) => {
if(err) return console.log(err);
res.send(('saved to db: ' + data));
})
});
在你的简历中:
handleSubmit:function(e){
e.preventDefault();
let databody = {
"name": this.state.nameIn,
"quote": this.state.quoteIn
}
fetch('http://localhost:5002/stored', {
method: 'POST',
body: JSON.stringify(databody),
headers: {
'Content-Type': 'application/json'
},
})
.then(res => res.json())
.then(data => console.log(data));
}
Node.js Express & MongoDB: CRUD Rest APIs For more detail, please visit: Node.js, Express & MongoDb: Build a CRUD Rest Api example Server side Pagination in Node.js with MongoDB and Mongoose Security:
Simple Node with Express + MongoDB Server An easy way to get started with a Express server with MongoDB with Node.js. Read more about it. Features Express REST API MongoDB Requirements node & npm git
问题内容: 我想运行一个使用express并连接到(boot2docker)docker mongo容器的节点应用程序。 当我第一次编写应用程序时,我使用的是本地安装的mongodb实例,并且以下配置有效: 它按预期运行。 现在,我尝试将其替换为mongo的docker实例。 因此,我已完成以下步骤以使mongo运行: 此时,似乎正在我的命令提示符下运行。 然后,我尝试获取在osx上运行docke
在我的mongodb数据库中有4个集合。我可以使用每个集合逐个检索数据。现在,如何使用findone、getAll这样的关键字从同一代码中的不同集合中检索数据?我的模特。js如下所示。分贝- 模型1。js 模式2。js
我正在制作一个包含Node.js、Express和EJS的应用程序,在按下一个按钮后,它会将您重定向到一个不同的页面(例如从localhost:3000/转到localhost:3000/about)。post请求被服务器接收,因为'post request'被记录到服务器端控制台,但是我没有被重定向,没有错误消息或任何东西。 服务器: 客户:
我一直试图向facebook发送HTTP POST请求,但没有成功。我从服务器收到以下响应: HTTP/1.1 400不良请求内容-类型:text/html;charset=utf-8日期:2016年12月10日星期六21:28:17 GMT连接:关闭内容-长度:2959 Facebook |错误 抱歉,出了点问题,我们正在修理,会尽快修好的 我的密码 我做错了什么?