Reputation: 11
this my controller
//...
if (req.method == 'POST') {
try {
//..
console.log(req.body.customerName);
}
I was trying to see if the req.body returned data but it returned undefined
this my route
var express = require('express');
var router = express.Router()
//...
router.get('/add-bill',check_login.yeu_cau_dang_nhap, billController.addBill);
router.post('/add-bill',check_login.yeu_cau_dang_nhap, billController.addBill);
//use body-parser in app.js
var app = express();
//...
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json());
//...
i tried installing "body-parser" library but it doesn't work
Upvotes: -1
Views: 39
Reputation: 19372
To parse mutlipart-form You've to install multer
, for other body types body-parser
If Your form sends only text fields then change enctype="application/x-www-form-urlencoded"
in form tag and no need for multer
cause body-parser
works perfect with non multipart
enctype.
But if Your form has file input, then You've to use multer
.
2 solutions:
multer.none()
at parent level:const app = express();
const multer = require('multer');
//...
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json());
app.use(multer.none());
const express = require('express');
const bodyParser = require('body-parser');
const multer = require('multer');
const fs = require('fs');
const homeController = require('../controllers/homecontroller');
const billController = require('../controllers/lichdatcontroller');
const check_login = require('../middlewares/check_login');
const router = express.Router();
router.get(
'/add-bill',
check_login.yeu_cau_dang_nhap,
billController.addBill);
const billsDir = __dirname__ + '/../uploads/bills';
try {
fs.mkdirSync(billsDir, { recursive: true });
}
catch (e) {}
router.post(
'/add-bill',
check_login.yeu_cau_dang_nhap,
bodyParser.urlencoded({ extended: false }), // <-- if enctype not multipart
multer({ dest: billsDir }), // <-- if form is multipart
billController.addBill);
module.exports = router;
also, create getBill
method in billController
and don't use req.method === 'POST'
cause You're already doing by router.post
Upvotes: 1