web-dev-qa-db-fra.com

Bibliothèque de validation pour Node.js

Existe-t-il un bon cadre de validation pour node.js qui valide une variable pour:

  • si c'est un type de chaîne, date, nombre, etc.
  • longueur max et min
  • email, téléphone
  • etc...
73
ajsie

J'ai récemment découvert validateur de nœuds par chriso .

Exemple

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('&lt;a&gt;').entityDecode();     //'<a>'
82
Baggz

Je voulais Ruby sur Rails et les validations de style cakephp. Je savais que c'était quelque chose que j'utiliserais encore et donc j'ai fait ce module npm rapide: https://npmjs.org/package/iz

Il se lit sémantiquement comme jasmin et peut être utilisé côté client ou serveur. Cela signifie qu'il est livré avec la prise en charge de commonjs et AMD ainsi que des règles de validation transmises via JSON.

Il est assez bien testé à l'unité, il n'a pas de dépendances de production et la portée est verrouillée pour une simple validation. Nous semblons avoir une petite communauté en ce moment. Les idées, les commentaires et les demandes de tirage sont les bienvenus.

Fonctions de bibliothèque actuelles:

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
15
Parris

Node-validator est une bibliothèque de méthodes de validation, de filtrage et de nettoyage des chaînes.

Donc, si vous voulez avoir une meilleure prise en charge des nombres et des tableaux, vous pouvez essayer Chai.js . Voici quelques exemples:

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
}
9
Trantor Liu

Je suppose que c'est le genre de chose que le module schéma est censé faire. Notez qu'il est étiqueté comme étant "en développement" (étiqueté comme v0.1a). Je ne l'ai pas essayé moi-même, mais il semble assez bon d'après les exemples montrés dans le README.

5
intuited

Pas à un niveau variable, mais au niveau d'un argument de fonction:

http://github.com/torvalamo/argtype.js

La date doit actuellement passer en tant que type 'objet'. C'est définitivement quelque chose que j'ai oublié et que je mettrai sur la liste des tâches. ;)

Les longueurs maximales et minimales spécifiques ne sont pas prises en charge et ne seront probablement pas implémentées (mais qui sait). Courriel, téléphone et tout ce qui peut être vérifié par regex. Voir l'exemple sur la page github, qui comprend un exemple de regex (simple).

3
Tor Valamo

Je recommande valida il y a un manque de documentation mais c'est assez simple à comprendre en regardant exemples .

Les fonctionnalités de Valida sont:

  • Désinfection
  • Validation synchrone et asynchrone
  • Groupes
  • Extensible
0
Eduardo Nunes