Pular para o conteúdo
Tecnologia

Como usar filtros e ordenações no Drizzle ORM

Use operadores como eq, ne, like, in e ordene resultados com eficiência no Drizzle ORM sem complicação.

Por que isso é importante

Como usar filtros e ordenações no Drizzle ORM. Use operadores como eq, ne, like, in e ordene resultados com eficiência no Drizzle ORM sem complicação.

Consultas com filtros no Drizzle

Para listar perguntas da tabela questions em um banco configurado com
Drizzle ORM, você precisa montar uma consulta com select , aplicar o where adequado e trazer o retorno com os tipos já inferidos em TypeScript.

Importação dos operadores

O Drizzle oferece operadores para filtros como igualdade, diferença, comparação e
padrões. Eles ficam disponíveis via drizzle-orm e precisam ser importados
explicitamente para utilizar nos filtros.

Operadores disponíveis no Drizzle ORM

  1. eq: Verifica se um campo é igual a um valor (Equal)
  2. ne: Verifica se um campo é diferente de um valor (Not Equal)
  3. inArray: Checa se o valor de uma coluna está dentro de um array
  4. like: Compara padrões (útil para strings e buscas parciais)
  5. notLike: Exclui com base em padrões
  6. ilike: Like com case insensitive
  7. gt / gte: Maior ou maior ou igual que um valor

Atenção

Todos os operadores precisam ser importados manualmente. Esquecer de importar provoca
erro de tempo de compilação e impede o uso do operador esperado.

Exemplo prático da consulta

Definimos uma constante result usando await db.select() .
Podemos puxar todos os campos de schema.questions e já aplicar o filtro com where , usando o operador eq , comparando o campo schema.questions.roomId com o roomId recebido por parâmetro.

Atenção

Certifique-se que os campos usados no filtro já estejam tipados corretamente dentro do
schema criado pelo Drizzle.

Aplicando ordenação na consulta

Para que os resultados mais recentes apareçam primeiro, usamos o operador desc importado de drizzle-orm . Essa função ordena de forma
decrescente com base na coluna selecionada.

Atenção

O operador desc também precisa ser importado. Ele aceita qualquer campo
declarado no schema, como schema.questions.createdAt .

Montagem da consulta completa

  1. Passo 1: Importar operadores como eq e desc dos pacotes do Drizzle.
  2. Passo 2: Fazer o select diretamente em schema.questions .
  3. Passo 3: Definir o where com eq(schema.questions.roomId, roomId) .
  4. Passo 4: Aplicar ordenação com orderBy(desc(schema.questions.createdAt)) .

Trecho de código simplificado

const result = await
db.select().from(schema.questions).where(eq(schema.questions.roomId,
roomId)).orderBy(desc(schema.questions.createdAt))

Atenção

Não confunda o operador desc com uma string 'DESC', como seria comum em
SQL puro. No Drizzle precisamos passar a função para que o tipo seja inferido
corretamente.

Resumo dos operadores

Operadores Básicos

Igualdade, diferença e inclusão

+ Prós

  • • Mais comuns nas queries
  • • Fáceis de aplicar

− Contras

  • • Sem suporte a lógica complexa diretamente

Operadores de Padrão e Comparação

like, ilike, maior, menor

+ Prós

  • • Úteis para buscas textuais
  • • Combinam bem com filtros dinâmicos

− Contras

  • • Case sensitive por padrão (exceto ilike)

Ferramentas que complementam Drizzle

Zod

Validação de dados para input seguro

PostgreSQL

Banco relacional compatível com Drizzle

TypeScript

Tipagem estática para total suporte no desenvolvimento

Checklist de Implementação

  • Importou os operadores corretamente
  • Usou eq no where com campo tipado
  • Aplicou desc na ordenação da consulta
  • Verificou a consistência dos resultados esperados