NODEJS:req.body.InputName => 未定义

问题描述 投票:0回答:1

这是我的控制器

//...
if (req.method == 'POST') {
        try {
            //..
            console.log(req.body.customerName);
}

我试图查看 req.body 是否返回数据,但它返回未定义
这是我的路线

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());
//...

我尝试安装“body-parser”库 但它不起作用

node.js undefined req
1个回答
0
投票

要解析多部分形式,您必须安装

multer
,对于其他身体类型
body-parser

如果您的表单仅发送文本字段,则更改表单标签中的

enctype="application/x-www-form-urlencoded"
,无需
multer
,因为
body-parser
与非
multipart
enctype 完美配合。

但是如果您的表单有文件输入,那么您必须使用

multer

2个解决方案:

  1. 只需在父级别添加
    multer.none()
const app = express();
const multer = require('multer');
//...
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json());
app.use(multer.none());
  1. 您可以将其添加到内部路线:
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;
© www.soinside.com 2019 - 2024. All rights reserved.