Data validation in js nu e treaba usoara, desi exista multe librarii care fac asta destul de bine.
La inceput am folosit si eu validator.js, ca mai tarziu sa vreau sa validez obiecte, asa ca am folosit Joi si mai apoi ajv.
Fiecare are plusuri si minusuri, asa ca am ajuns sa imi fac propria librarie pentru treaba asta - GitHub - viczam/easevalidation: javascript validation library.
Avantajul major e ca e foarte usor sa iti construiesti proprii validatori, in 99% din cazuri o functie care returneaza true sau false pe baza unui value
argument e de ajuns.
Ai ca paradigme de validare atata una functionala - test(isNumber(), isMin(100), isFinite())(101)
, cat si chained validators: const isValid = number().isMin(100).isFinite().test(101)
Poti valida scalari, sau obiecte dupa o schema (asemanator cu Joi si ajv).
Vine cu toti validatorii din lodash (isObject
, isNumber
etc), toti validatorii din validator.js, toti cei date-related din date-fns (isMonday
, isSameDay
etc), plus o multime de alti custom validators pe care ii puteti vedea aici.
Exista si ceva teste, de ex aici puteti vedea cum validezi un obiect dupa o schema, sau aici, sau aici.
Partea buna e ca nu poti face doar data validation cat si data conversion. De ex, daca un number validator primeste un string care e un numar valid, poate face si type casting. La fel si daca vrei sa faci un mongo ObjectID validator care sa transforme string-ul intr-un ObjectID daca e valid.
Desi e la inceput, libraria e destul de completa - v1.0 se apropie.
Orice feedback e binevenit, iar daca vedeti imbunatatiri sau aveti idei de validatori noi, astept feedback prin github issues.