Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/daiangm/joker-validator
Validador de dados JSON para NodeJS
https://github.com/daiangm/joker-validator
customized data data-validation javascript json json-schema nodejs schema validador validation validator
Last synced: 23 days ago
JSON representation
Validador de dados JSON para NodeJS
- Host: GitHub
- URL: https://github.com/daiangm/joker-validator
- Owner: daiangm
- License: mit
- Created: 2021-08-13T18:43:22.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2022-04-11T22:44:13.000Z (over 2 years ago)
- Last Synced: 2024-10-01T05:01:28.575Z (about 1 month ago)
- Topics: customized, data, data-validation, javascript, json, json-schema, nodejs, schema, validador, validation, validator
- Language: JavaScript
- Homepage:
- Size: 153 KB
- Stars: 3
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## Validador de dados JSON para Node.js
### O joker-validator analisa os dados JSON enviados conforme regras personalizadas indicadas como parâmetros na função, retorna o resultado da validação e, caso os dados estejam inválidos, retorna também uma mensagem de erro padrão ou personalizada.
## Instalação
```sh
npm install joker-validator
```## Parâmetros da Função:
Este método funciona através de 3 argumentos: ***data***, ***rules*** e ***allowedFields***.
### Índice:
1. [data](#data)
2. [rules](#rules)
* [dataType](#dataType)
* [len](#length)
* [range](#range)
* [list](#list)
* [equals](#equals)
* [required](#required)
* [regex](#regex)
* [custom](#custom)
* [message](#message)
3. [allowedFields](#allowedFields)[Exemplo](#exemplo)
### data
JSON baseado em chaves e valores como ``` { "library": "json-validator" } ```.
Este pode ser os dados enviados através de uma requisição HTTP (REST).
Verificar const dataExample no exemplo abaixo.### rules
Objeto Javascript que contêm as regras para validação dos valores enviados em data.**Propriedades aceitáveis**:
Esta propriedade serve para comparar se o tipo de dado enviado em data (conforme a chave indicada) corresponde ao valor setado aqui.
Valores aceitáveis: string, number, boolean, date (UTC), object e array
Ex: ```library: {dataType: "string"}```
Define a quantidade mínima e máxima de caracteres de uma String ou itens de um Array. Você deve utilizar as propriedades min e/ou max.
Ex: ``library: {len: { min: 4, max: 14 }}``
Define um intervalo númerico ou de data (_date_) aceitável para o valor enviado em data na chave indicada. Você deve utilizar as propriedades min e/ou max.
Ex: ``date: {range: { min: "1921-01-01", max: "1999-01-01"}}``
###### --> Neste exemplo, queremos determinar que o valor de date em ***data*** só é aceitável em um intervalo entre 18 e 100 anos em relação à 01/01/2021
Array de _Strings_ e/ou Números aceitáveis para o valor de uma determinada chave em data.
Ex: ``uf: {list: ["AC", "AL", "AM", "AP", "BA", "CE", "DF", "ES", "GO", "MA", "MT", "MS", "MG", "PA", "PB", "PR", "PE", "PI", "RJ", "RN", "RO", "RS", "RR", "SC", "SE", "SP", "TO"]}``
Exige que o valor de um determinado campo em ***data*** seja igual à outro campo também enviado em ***data***. Normalmente utilizado para confirmar um campo de senha ou e-mail.
Ex: ``check_pass: {equals: "password"}``
Determina se o valor do campo em ***data*** é de preenchimento obrigatório.
Ex: ``library: {required: true}``
Compara se o valor do campo em ***data*** se enquadra na Expressão Regular em Javascript. definida na propriedade.
Ex: ``cep: {regex: /^[0-9]{8}|([0-9]{5}|[0-9]{2}.[0-9]{3})-[0-9]{3}$/i}``
Compara o valor do campo em ***data*** conforme configuração de validação no Objeto ***customValidation*** em custom.validation.js.
Ex: ``email: {custom: "email"}``
##### Em ***customValidation***, você pode adicionar um conjunto de regras de validação e atribuir o nome que desejar.
##### Por padrão, ***customValidation*** possui validação de número de celular (formato brasileiro), e-mail, CEP, URL e formato de senha.
Personaliza a mensagem de erro no retorno da função conforme a regra definida.
Na _String_ da mensagem, utilize {value} para imprimir o valor do campo em ***data***, {field} para o nome do campo/chave em ***data*** e {NomeDaRegra} para o valor da regra (Ex: {list})
Para valores das regras utilize: {dataType}, {minLength}, {maxLength}, {minRange}, {maxRange}, {list}, {required}, {regex} e {custom}.
Ex: ``library: {dataType: "number", message: {dataType: "'{value}' do campo '{field}' não corresponde ao tipo de dado '{dataType}'"} }``
Retorno do exemplo acima:
``{validate: false, message: "'json-validator' do campo 'library' não corresponde ao tipo de dado 'number'"}``Verificar const rules no exemplo abaixo.
### allowedFields
Array que contêm os nomes dos campos aceitáveis em ***data***. Este parâmetro serve para limitar quais campos serão aceitos e não permite que tenha outros campos em ***data***, ou seja, caso tenha algum campo com nome diferente dos que estão listados em allowedFields, a função retornará ``{validate: false}``
Verificar const allowedFields no exemplo abaixo.## Exemplo
```javascript
const validate = require('joker-validator');const dataExample = {
"username": "daiangm",
"email": "[email protected]",
"password": "Pa$$w0rd",
"check_pass": "Pa$$w0rd",
"phone": "(62)99999-9999",
"cpf": "000.000.000-00",
"birthdate": "12/12/1990",
"uf": "GO",
}const rules = {
username: {
dataType: "string",
len: { min: 3, max: 16 },
required: true,
message: {len: "O valor de {field} deve ter entre {len[min]} e {len[max]} caracteres"}
},
email: {
custom: "email",
required: true,
message: { custom: "'{value}' não é um endereço de {field} válido" }
},
password: {
dataType: "string",
custom: "Pa$$w0rd",
len: { min: 8, max: 16 },
required: true,
message: {required: "É obrigatório o preenchimento do campo '{field}'"}
},
check_pass:{
equals: "password",
required: true
},
phone: {
custom: "phone",
required: true
},
cpf: {
regex: /^[0-9]{3}.[0-9]{3}.[0-9]{3}-[0-9]{2}$/i
},
birthdate: {
dataType: "date",
range: { min: "1900-01-01", max: "2003-01-01"}
},
uf: {
list: ["GO", "MT", "MS"],
message: { list: "O valor do campo '{field}' precisa ser preenchido com um dos valores da lista: {list}" }
}
}const allowedFields = ["username", "email", "password", "check_pass", "phone", "cpf", "birthdate", "uf"]
const result = validate(dataExample, rules, allowedFields);
console.log(result);
if(!result.validate){
return false;
}```