Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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

Awesome Lists containing this project

README

        

Logo de Joker Validator

## 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;
}

```