2011-04-05 88 views
21

¿Existe una biblioteca de manejo y validación de formularios preferida para Express?Cómo validar y manejar un formulario en Express (NodeJS)

Realmente estoy buscando un nivel de abstracción similar al que se encuentra en los formularios de Django, es decir, la validación y el informe de errores en la plantilla.

Si la misma validación se puede utilizar en el lado del cliente, sería genial.

¿Alguien ha usado, o escrito, algo bueno?

Respuesta

18

Parece que hay un módulo para esto ubicado en https://github.com/caolan/forms. Nunca lo he usado, pero parece bastante completo.

+7

no me gusta la idea de otra persona que controla mi formulario de marcado. – chovy

+8

@chovy: Debe leer el documento con más cuidado en lugar de guiar a todos en la dirección incorrecta. Cuando procesa su formulario con form.toHTML() of field.toHTML(), puede pasar un iterador personalizado en el parámetro. El iterador es la función que usará HTML para representar el formulario/campo. Puede crear widgets personalizados, validadores, iteradores y más ... –

+1

Ambos tienen un punto. Al expandir lo que dice @chovy, incluso si pasa un iterador, está indicando que el formulario debe representarse usando '.toHTML()'. Contrariamente a eso y al expandirse en lo que dijo @Jean-Philippe, en realidad ni siquiera necesitas usar '.toHTML()' para obtener casi todo lo que necesitas para manejar tus formularios (aunque fue una lectura muy cuidadosa de los documentos) para darse cuenta de eso). –

7

Esto también parece viable y aún está en desarrollo: https://github.com/ctavan/express-validator

He aquí un ejemplo de validación de un envío del formulario (solicitud posterior de inicio de sesión):

exports.login.post = function(req, res){ 
    req.assert('username', 'Enter username').notEmpty(); 
    req.assert('password', 'Enter password').notEmpty(); 
    res.locals.err = req.validationErrors(true); 

    if (res.locals.err) { 
    if (req.xhr) { 
     res.send(401, { err: res.locals.err }); 
    } else { 
     res.render('login', { err: res.locals.err }); 
    } 

    return; 
    } 

//authenticate user, data is valid 
}; 
Cuestiones relacionadas