Бібліотека перевірки для Node.js [закрито]


75

Чи існує хороша система перевірки для node.js, яка перевіряє змінну для:

  • якщо це тип рядка, дати, числа тощо
  • максимальна та мінімальна довжина
  • електронна пошта, телефон
  • тощо ...

1
Оскільки питання закрите, я коментую свою відповідь, joi.js від hapi - це досить обширна структура моделі javascript. Тут є все, що ти хочеш, і багато іншого. Чудова документація та чудові користувачі, які використовують її у постановках
Шріватса Харіш Венкатарамана

Я рекомендую вам перевірити фреймворк contextable.js, який забезпечує перевірку на основі схем та обробку помилок. Це якийсь ActiveRecord для Node.js.
xpepermint

Відповіді:


86

Нещодавно я виявив перевірку вузлів від chriso .

Приклад

var check = require('validator').check,
    sanitize = require('validator').sanitize

//Validate
check('test@email.com').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>'

6
Так, але node-validator зосереджується на валідації рядків. Тому перевіряючи тип змінної типу "це типу Date?" це не те , що ця бібліотека призначена для .
sebpiq

2
Це ганьба. Мені дуже подобається їхнє уявлення про те, як повинна працювати перевірка, я думаю, що це зручно, проте я хотів би мати спосіб провести більш суворі перевірки.
Гастон Санчес,

Я просто випускаю цю нову систему перевірки: github.com/wilkerlucio/composed-validations
Wilker Lucio

Я не можу знайти, як використовувати валідатор для необов’язкових параметрів? Чи забезпечує це перевірка вузлів?
JehandadK

1
Я перевірив їх усіх і взагалі не виявив їх виразними, я написав свій власний npmjs.org/package/indicative
Аман Вірк

15

Я хотів рубін на рейках та перевірку стилю cakephp. Я знав, що це те, що я буду використовувати знову і знову, тому я зробив цей швидкий модуль npm: https://npmjs.org/package/iz

Він читається семантично, як жасмин, і може використовуватися на стороні клієнта або сервера. Це означає, що він постачається з підтримкою commonjs та amd разом із правилами перевірки, переданими через JSON.

Він досить добре перевірений модулем, у нього немає виробничих залежностей, а область застосування заблокована до просто перевірки. Здається, зараз у нас працює невелика громада. Вітаються ідеї, відгуки та запити.

Поточні функції бібліотеки:

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

10

Node-validator - це бібліотека методів перевірки, фільтрації та санітарії рядків.

Так що якщо ви хочете мати кращу підтримку для чисел і масивів, ви можете спробувати Chai.js . Ось кілька прикладів:

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
}

11
Ніяка кривда, крім того, щоб мати, здається, здається мені марною. Я пишу вірш чи програму? if (the("string").I.want.to.validate.is.shorter.than(123) === false) { console.log('The string is too long'); }
Савас Ведова

6
існують надто довгі та марні виклики методів, оскільки Chai призначений для написання модульних тестів.
TinyTimZamboni

@SavasVedova, ти пишеш обидва.
AJB

6

Я переконаний, що це те, що призначено модулю схеми . Зверніть увагу, що він позначений як "у розробці" (позначений як v0.1a). Я не пробував сам, але це виглядає досить добре з прикладів, показаних у README.


3

Не на рівні змінної, а на рівні аргументу функції:

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

На даний момент дату потрібно передавати як тип "об'єкт". Це, безумовно, те, про що я забув і внесу до списку завдань. ;)

Конкретна максимальна та мінімальна довжина не підтримується, і, ймовірно, не буде реалізована (але хто знає). Електронну пошту, телефон та все те, що можна перевірити регулярним виразом. Див. Приклад на сторінці github, що включає (простий) приклад регулярного виразу.


0

Я рекомендую перевірити відсутність документації, однак зрозуміти, дивлячись на приклади, досить просто .

Особливості Valida:

  • Санітарна обробка
  • Синхронне та асинхронне підтвердження
  • Групи
  • Розширюваний

-1

Я закінчую писати бібліотеку щодо перевірки Javascript (як вузла, так і браузера), буду писати документи протягом наступних кількох днів, але код майже готовий: https://github.com/wilkerlucio/composed-validations

Будь ласка, повідомте мене, якщо у вас є якісь запитання / пропозиції щодо цього :)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.