Skip to content

distinct

A regra distinct garante que todos os valores de uma propriedade dentro de uma matriz sejam únicos. A regra de validação só funciona com o tipo de esquema array.

Supondo que você tenha uma matriz de objetos, cada um definindo uma propriedade de id de produto e você queira garantir que nenhuma id de produto duplicada esteja sendo usada.

ts
// Dados de amostra

{
  "products": [
    {
      "id": 1,
      "quantity": 4,
    },
    {
      "id": 3,
      "quantity": 10,
    },
    {
      "id": 8,
      "quantity": 1,
    }
  ]
}

A regra é aplicada na própria matriz e NÃO em seus membros.

ts
import { schema, rules } from '@ioc:Adonis/Core/Validator'

// Regra de validação

{
  products: schema
    .array([
      rules.distinct('id')
    ])
    .members(schema.object().members({
      id: schema.number(),
      quantity: schema.number(),
    }))
}

Você também pode usar a regra distinct com uma matriz de valores literais usando a palavra-chave curinga *. Por exemplo:

ts
// Dados de amostra

{
  "tags": [1, 10, 15, 8]
}
ts
// Regra de validação

{
  tags: schema
    .array([
      rules.distinct('*')
    ])
    .members(schema.number())
}