#node.js #express
#node.js #выразить
Вопрос:
У меня возникли проблемы, когда я сохраняю данные в базе данных 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 amp;amp; 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>
Я получаю {} в журнале, это означает, что запрос.body становится пустым.
я пробовал в app.js
app.use(bodyParser.json());
app.use(express.urlencoded({limit: '100mb',extended: false }));
но это не работает
Ответ №1:
Добавьте 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
.
Комментарии:
1. как насчет удаления
app.use(express.urlencoded({limit: '100mb',extended: false }));
?2. то же самое, что и без приведенной выше строки
3. @ Jack Yu я снова проверил код, он работает с postman, но не с form
4. Попробуйте удалить
enctype="multipart/form-data"
в форме.5. Нет, но я обнаружил, что у него есть некоторые блокирующие маршруты, которые блокируют данные формы, я удалил это, и теперь это работает