¿Hay un buen marco de validación para Node.js que valida una variable para:biblioteca de validación para Node.js
- si es un tipo de cadena, fecha, etc Número
- máxima y mínima longitud
- correo electrónico, teléfono
- etc ...
¿Hay un buen marco de validación para Node.js que valida una variable para:biblioteca de validación para Node.js
Recientemente he descubierto node-validator por chriso.
Ejemplo
var check = require('validator').check,
sanitize = require('validator').sanitize
//Validate
check('[email protected]').len(6, 64).isEmail(); //Methods are chainable
check('abc').isInt(); //Throws 'Invalid integer'
check('abc', 'Please enter a number').isInt(); //Throws 'Please enter a number'
check('abcdefghijklmnopzrtsuvqxyz').is(/^[a-z]+$/);
//Sanitize/Filter
var int = sanitize('0123').toInt(); //123
var bool = sanitize('true').toBoolean(); //true
var str = sanitize(' \s\t\r hello \n').trim(); //'hello'
var str = sanitize('aaaaaaaaab').ltrim('a'); //'b'
var str = sanitize(large_input_str).xss();
var str = sanitize('<a>').entityDecode(); //'<a>'
Sí, pero el validador de nodos se centra en la validación de cadenas. Por lo tanto, verificando el tipo de una variable como "¿es de tipo Fecha?" es [no es para lo que está destinada esta biblioteca] (https://github.com/chriso/node-validator/issues/52). – sebpiq
Es una pena. Realmente me gusta su idea de cómo debería funcionar la validación, creo que es útil, sin embargo, me gustaría tener una forma de tener validaciones más estrictas. –
Acabo de lanzar este nuevo marco de validación: https://github.com/wilkerlucio/composed-validations –
en un nivel variable, pero en un nivel argumento de la función:
http://github.com/torvalamo/argtype.js
Fecha tiene que pasar como tipo 'objeto'. Definitivamente es algo que he olvidado y que pondré en la lista de tareas pendientes. ;)
La longitud máxima y mínima específica no es compatible, y probablemente no se implementará (pero quién sabe). Correo electrónico, teléfono y todo lo que puede verificarse por regex. Vea el ejemplo en la página de github, que incluye un ejemplo de expresión regular (simple).
Entiendo que este es el tipo de cosas que el módulo schema está destinado a hacer. Tenga en cuenta que está etiquetado como "en desarrollo" (etiquetado como v0.1a). No lo he probado yo mismo, pero se ve muy bien a partir de los ejemplos que se muestran en el archivo README.
Node-validator es una biblioteca de métodos de validación de cadena, de filtrado y de desinfección.
Así que si quieres tener un mejor soporte para números y matrices, puedes probar Chai.js. He aquí algunos ejemplos:
var expect = require('chai').expect;
try {
expect([1, 2, 3]).to.have.length.below(4);
expect(5).to.be.within(3,6);
expect('test').to.have.length(4);
} catch (e) {
// should not occur
}
Sin ofender pero que to.have, to.be me parece inútil. ¿Estoy escribiendo un poema o un programa? 'if (the (" string "). I.want.to.validate.is.shorter.than (123) === false) {console.log ('La cadena es demasiado larga'); } ' –
las llamadas a métodos extra largos e inútiles están ahí porque Chai está diseñado para escribir pruebas unitarias. – TinyTimZamboni
@SavasVedova, estás escribiendo ambos. – AJB
yo quería rubí en los carriles y las validaciones de estilo cakephp. Sabía que era algo que usaría una y otra vez, así que creé este módulo npm rápido: https://npmjs.org/package/iz
Se lee semánticamente como el jazmín, y puede usarse en el lado del cliente o del servidor. Esto significa que viene con soporte para commonjs y amd junto con reglas de validación pasadas a través de JSON.
Está bastante bien probado en una unidad, no tiene dependencias de producción, y el alcance está bloqueado a solo validación. Parece que tenemos una comunidad pequeña yendo ahora. Las ideas, los comentarios y las solicitudes de extracción son bienvenidos.
funciones de biblioteca actuales:
iz.alphaNumeric(*); // Is number or string(contains only numbers or strings)
iz.between(number, start, end); // Number is start or greater but less than or equal to end, all params numeric
iz.blank(*); // Empty string, undefined or null
iz.boolean(*); // true, false, 0, 1
iz.cc(*); // Luhn checksum approved value
iz.date(*); // Is a data obj or is a string that is easily converted to a date
iz.decimal(*); // Contains 1 decimal point and potentially can have a - at the beginning
iz.email(*); // Seems like a valid email address
iz.extension(ob1, ob2); // If obj2's methods are all found in obj1
iz.fileExtension(arr, value); // Checks if the extension of value is in arr. An obj can be provide, but must have indexOf defined.
iz.fileExtensionAudio(value); // Check against mp3, ogg, wav, aac
iz.fileExtensionImage(value); // Check against png, jpg, jpeg, gif, bmp, svg, gif
iz.inArray(arr, value); // If * is in the array
iz.int(*, bool (optional)); // Is an int. If the 2nd variable is true (false by default) a decimal is allowed
iz.ip(str); // str resembles an IPV4 or IPV6 address
iz.minLen(val, min); // val (str or arr) is greater than min
iz.maxLen(val, max); // val (str or arr) is shorter than max
iz.multiple(num, mult); // Number is multiple of another number
iz.number(*); // Is either an int or decimal
iz.ofType(obj, typeName); // If it is a named object, and the name matches the string
iz.phone(str, canHaveExtension?); // Is an american phone number. Any punctuations are allowed.
iz.postal(*); // Is a postal code or zip code
iz.ssn(*); // Is a social security number
estoy terminando de escribir una biblioteca de validaciones de Javascript (ambos nodos y navegador), escribiré los documentos en los próximos días, pero el código está casi listo: https://github.com/wilkerlucio/composed-validations
Por favor, hágamelo saber si usted tiene alguna pregunta/sugerencia sobre él :)
Debido a que la cuestión está cerrada estoy comentando mi respuesta, joi.js de la HAPI es un muy amplio marco modelo Javascript. Tiene todo lo que quieres y mucho más. Gran documentación y excelentes usuarios usándola en las producciones –
. Te animo a que compruebes el marco [contexttable.js] (https://github.com/xpepermint/contextablejs) que proporciona validaciones basadas en esquemas y manejo de errores. Es una especie de ActiveRecord para Node.js. – xpepermint