node.js - node.js POST 空 req.body
问题描述
将数据存储到 MySQL 数据库时遇到问题。我在控制台空白中得到回报。像这样 {}
这是路线代码:::app.post('/create', employeeController.create);
这是我的控制器代码
exports.create = function(req, res) {
console.log((req.body));
const new_employee = new Employee(req.body);
//handles null error
if(req.body.constructor === Object && Object.keys(req.body).length === 0){
res.status(400).send({ error:true, message: 'Please provide all required field' });
}else{
Employee.create(new_employee, function(err, employee) {
if (err)
res.send(err);
res.json({error:false,message:"Employee added successfully!",data:employee});
});
}
};
这是我的模型代码:
var db = require('../database');
//Employee object create
var Employee = function(employee){
this.name = employee.name;
this.email = employee.email;
this.position = employee.position;
};
Employee.create = function (newEmp, result) {
db.query("INSERT INTO employee set ?", newEmp, function (err, res) {
if(err) {
console.log("error: ", err);
result(err, null);
}
else{
console.log(res.insertId);
result(null, res.insertId);
}
});
};
module.exports= Employee;
我的视图代码:
<form action="/create" enctype="multipart/form-data" method="POST">
<div class="row">
<div class="col-md-6">
<label>Name</label>
<input name="name" type="text" class="form-control" required>
</div>
<div class="col-md-6">
<label>Email</label>
<input name="email" type="email" class="form-control" required>
</div>
</div>
<div class="row">
<div class="col-md-6">
<label for="exampleFormControlTextarea1" class="form-label">Position</label>
<input name="position" type="text" class="form-control" required>
</div>
</div>
<button type="submit" class="btn btn-primary">Save</button>
<button type="submit" class="btn btn-primary">Cancel</button>
<br><br>
</form>
我在日志中得到 {} 这意味着 req.body 变得空白。
我在 app.js 中尝试过
app.use(bodyParser.json());
app.use(express.urlencoded({limit: '100mb',extended: false }));
但它不工作
解决方案
app.use(bodyParser.urlencoded({ extended: false }))
在你的之前添加app.use(bodyParser.json());
,然后删除app.use(express.urlencoded({limit: '100mb',extended: false }));
。
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json());
enctype="multipart/form-data"
然后在表格中删除。因为您的表单只有文本输入,所以您可以将其删除。并且bodyParser
不支持multipart/form-data
。
推荐阅读
- angularjs - ng-click 没有从表中返回修改过的数据
- reactjs - 有没有办法导入 scss 文件以使用 react-create-app 反应组件?
- apache - 无法在 Netbeans 9 中设置 apache tomcat
- assembly - iretq 抛出 GP 错误
- java - 以最大概率从名片中提取地址
- json - 烧瓶错误请求 400
- django - 如何将夹具对象写入 Django DB?
- java - 如果将字符串的值设置为包含对象的表达式会发生什么?
- arcgis - 如何将ArcGIS地图服务导出地图操作格式默认改为jpeg
- cuda - Cuda 补丁:全部安装还是安装最新?