[英]express.js req.body is always empty
I'm learning node.js and express.js, and when I post something I have an empty body. 我正在学习node.js和express.js,发布内容时我的身体是空的。
What I do is trying to get input from a registration form. 我正在尝试从注册表中获取输入。 My app.js is (the relevant part):
我的app.js是(相关部分):
var express = require('express');
var path = require('path');
var expressValidator = require('express-validator');
var cookieParser = require('cookie-parser');
var session = require('express-session');
var bodyParser = require('body-parser');
var multer = require('multer');
var routes = require('./routes/index');
var users = require('./routes/users');
var app = express();
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
var upload = multer({ dest: 'uploads/' });
app.use(logger('dev'));
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
// Handle Express session
app.use(session({
secret:'secret',
saveUnintialized: true,
resave: true
}));
users.js is: users.js是:
var express = require('express');
var router = express.Router();
// Add model for user.
// Note that variable has first uppercase, and model name is singular.
var User = require('../models/user');
/* GET users listing. */
router.get('/', function(req, res, next) {
res.send('respond with a resource');
});
router.get('/register', function(req, res, next) {
res.render('register', {
'title': 'Register'
});
});
router.get('/login', function(req, res, next) {
res.render('login', {
'title': 'Login'
});
});
router.post('/register', function(req, res, next) {
// These values come from the form.control name in register.jade
console.log('Register clicked...');
console.log('Body: ', req.body);
});
module.exports = router;
and register.jade is: register.jade是:
extends layout
block content
h1 Register
p Please register using the form below
ul.errors
if errors
each error, i in errors
li.alert.alert-danger #{error.msg}
form(method='post', action='/users/register', enctype='multipart/form-data')
.form-group
label Name
input.form-control(name='name', type='text', placeholder='Enter Name')
.form-group
label Email
input.form-control(name='email', type='text', placeholder='Enter Email')
.form-group
label Username
input.form-control(name='username', type='text', placeholder='Enter Username')
.form-group
label Password
input.form-control(name='password', type='password', placeholder='Enter password')
.form-group
label Confirm Password
input.form-control(name='password2', type='password', placeholder='Confirm password')
.form-group
label Profile Image
input.form-control(name='profileimage', type='file')
input.btn.btn-default(name='submit', type='submit', value='Register')
What's wrong????? 怎么了????? I'm getting crazy :-(
我快疯了:-(
Thanks 谢谢
There should be app.use('/users', users);
应该有
app.use('/users', users);
somewhere in your app.js, make sure this is after your app.use(bodyParser
block since body parsers will populate req.body
. 确保在app.js中的某个位置,这是在
app.use(bodyParser
块之后,因为正文解析器将填充req.body
。
You should also remove enctype='multipart/form-data'
if you don't need file uploads or use the multipart parser in users.js: 如果不需要文件上传或在users.js中使用分段分析器,则还应该删除
enctype='multipart/form-data'
:
var multer = require('multer');
var upload = multer({ dest: 'uploads/' });
router.post('/register', upload, function(req, res) {
You can try in app.js: 您可以在app.js中尝试:
var routes = require('./routes')
app.use(routes)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.