Node.js, Express and Jade - Forms

I use Node.js, Express and Jade, and I'm trying to figure out how to publish, validate and process form data.

In my jade file I create a contact form:

div#contact-area
    form(method='post',action='')
        label(for='name') Name:
        input(type='text',name='name',id='name')        
        label(for='email') Email:
        input(type='text',name='email',id='email')  
        input(type='submit',name='submit',value='Submit').submit-button

Then I use the express validator module to validate the form as follows:

var express = require('express')
    ,routes = require('./routes')
    ,http = require('http')
    ,path = require('path')
    ,expressValidator = require('express-validator')
;

var app = express.createServer();

app.configure(function(){
    app.set('views', __dirname + '/views');
    app.set('view engine', 'jade'); //not needed if we provide explicit file extension on template references e.g. res.render('index.jade');
    app.use(express.bodyParser());
    app.use(expressValidator);
    app.use(express.methodOverride());
    app.use(app.router);
});

//display the page for the first time
app.get('/mypage', function(req,res){
    res.render('mypage', { 
        title: 'My Page'        
    });            
});
//handle form submission
app.post('/mypage', function(req,res){
    req.assert('name', 'Please enter a name').notEmpty();
    req.assert('email', 'Please enter a valid email').len(6,64).isEmail();

    var errors = req.validationErrors();
    if( !errors){   
        sendEmail(function(){
            res.render('mypage', { 
                title: 'My Page',
                success: true
            });
        });
    }
    else {
        res.render('mypage', { 
            title: 'My Page',
            errors: errors
        });
    }
 });

Thus, there are three scenarios where my pages are displayed, and each of them has access to various local variables:

  • When the page loads for the first time (errors = undefined, success = undefined)
  • When the form is submitted and errors appear (errors = array, success = undefined)
  • When the form is submitted and there are no errors (errors = undefined, success = true)

So, my main problems are as follows:

  • Jade , , , , , . , , ​​ "success", "". Jade, undefined, ?
  • , , ( ), , (, , , ). , reset. ?
+5
1
  • , locals.variable . javascript jade.

    -locals.form_model = locals.form_data || {};

  • . , , req.body . , form_model.value . , , , .

    - req.body , , . .

+1

All Articles