阅读表单

时间:2015-07-31 17:30:33

标签: node.js express body-parser

我使用node.js建立网站并表达,因此,为了阅读注册信息(用户名,密码和电子邮件),我使用BodyParser。

这是包含表单的玉代码。这是在我的观点和#39;文件夹中。

form(class="form" method="post" action="/UsuarioReg" enctype="multipart/form-data")
                    label(class="col-lg-12") username
                    input(type="text" name="username")
                    br
                    label(class="col-lg-12") password
                    input(type="password" name="password")
                    br
                    label(class="col-lg-12") email
                    input(type="email" name="email")
                    br
                    input(type="submit" value="Signup")

这是我的' server.js'文件,位于根文件夹中。

var express = require('express');
var app = express();

var morgan = require('morgan');
var mongoose = require('mongoose');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var session = require('express-session');

var configDB = require('./config/database.js');
mongoose.connect(configDB.url);

app.use(bodyParser.urlencoded({ extended: false} ));
app.use(express.static('public'));
app.use(morgan('dev'));
app.use(cookieParser());
app.use(session({
    secret: 'anyString',
    saveUninitialized: true,
    resave: true
}));

app.set('view engine', 'jade');
require('./app/routes.js')(app);

最后,这是我的' routes.js'文件,位于' app'内文件夹中。

var User = require('./models/user');

module.exports = function (app){
app.post('/UsuarioReg' ,function(req,res){

        var newUser = new User();
        newUser.local.username = req.body.username;
        newUser.local.password = req.body.password;
        newUser.local.email = req.body.email;
        console.log('Data received: \nusername: ' + newUser.local.username + '\npassword: ' + newUser.local.password + '\nemail: ' + newUser.local.email); 

        newUser.save(function (err) {
            if (err) return handleError(err);
        });

        res.send('Successful signup');    
    });
};

然而,每次我发送注册表单时,bodyparser都会显示“未定义”#。我确定行动' / UsuarioReg'在jade和routes.js文件中都有相同的名称,是否缺少任何代码片段,或者' server.js'中的变量声明的顺序可能不正确。文件?

提前谢谢。

1 个答案:

答案 0 :(得分:3)

如果您没有上传任何文件,请从表单中删除enctype="multipart/form-data"。 bodysarser中间件无法解析多部分表单数据。如果你想上传文件,你将需要另一个中间件,如multer。