C'è un quadro di convalida bene per node.js che convalida una variabile per:biblioteca di convalida per Node.js
- se un tipo di stringa, data, numero ecc
- max e min Lunghezza
- e-mail, telefono
- ecc ...
C'è un quadro di convalida bene per node.js che convalida una variabile per:biblioteca di convalida per Node.js
Recentemente ho scoperto node-validator di chriso.
Esempio
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ì, ma validatore di nodi si concentra sulla convalida della stringa. Quindi verificando il tipo di una variabile come "è di tipo Data?" [non è ciò che questa biblioteca è destinata a] (https://github.com/chriso/node-validator/issues/52). – sebpiq
È un peccato. Mi piace molto la loro idea di come dovrebbe funzionare la convalida, penso sia utile, tuttavia mi piacerebbe avere un modo per avere convalide più severe. –
Sto appena pubblicando questo nuovo framework di validazione: https://github.com/wilkerlucio/composed-validations –
Non su un livello variabile, ma su un livello di funzione argomento:
http://github.com/torvalamo/argtype.js
Data attualmente deve passare come tipo "oggetto". È definitivamente qualcosa che ho dimenticato e inserirò nella lista delle cose da fare. ;)
La lunghezza massima e minima specifica non è supportata e probabilmente non verrà implementata (ma chissà). Email, telefono e tutto ciò che può essere controllato tramite regex. Vedere l'esempio sulla pagina github, che include un esempio di (semplice) regex.
Capisco che questo è il genere di cose che il modulo schema deve fare. Si noti che è etichettato come "in sviluppo" (contrassegnato come v0.1a). Non l'ho provato da solo, ma sembra piuttosto buono dagli esempi mostrati nel README.
Node-validator è una libreria di metodi di convalida stringa, filtraggio e sanificazione.
Quindi se si desidera avere un supporto migliore per Numbers e Array, si può provare Chai.js. Ecco alcuni esempi:
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
}
Senza offesa, ma quello per cui mi sembra inutile. Sto scrivendo una poesia o un programma? 'if (the (" stringa "). I.want.to.validate.is.shorter.than (123) === false) {console.log ('La stringa è troppo lunga'); } ' –
le chiamate al metodo extra lunghe e inutili ci sono perché Chai è progettato per la scrittura di test di unità. – TinyTimZamboni
@SavasVedova, stai scrivendo entrambi. – AJB
Volevo rubino su rotaie e convalide stile cakephp. Sapevo che era qualcosa che avrei usato ripetutamente, quindi ho realizzato questo rapido modulo npm: https://npmjs.org/package/iz
Legge semanticamente come il gelsomino e può essere utilizzato lato client o server. Ciò significa che viene fornito con il supporto per commonjs e amd insieme alle regole di convalida passate tramite JSON.
È abbastanza ben collaudato, non ha dipendenze di produzione e l'ambito è bloccato solo per la validazione. Sembra che ora ci sia una piccola comunità. Idee, feedback e richieste di pull sono tutte benvenute.
attuali funzioni di libreria:
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
Sto finendo scrivendo una libreria su validazioni Javascript (sia nodo e browser), scriverò i documenti nei prossimi giorni, ma il codice è quasi pronto: https://github.com/wilkerlucio/composed-validations
Per favore fatemi sapere se avete domande/suggerimenti su di esso :)
Perché la questione è chiusa sto commentando la mia risposta, joi.js dalla Hapi è un piuttosto ampio quadro del modello javascript. Ha tutto ciò che vuoi e molto altro. Ottima documentazione e grandi utenti che lo utilizzano nelle produzioni –
Vi incoraggio a controllare il framework [contextable.js] (https://github.com/xpepermint/contextablejs) che fornisce convalide basate su schemi e gestione degli errori. È una sorta di ActiveRecord per Node.js. – xpepermint