🚀 Oferta especial: 60% OFF no CrazyStack - Últimas vagas!Garantir vaga →
ORM

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.

CrazyStack
12 min de leitura
DrizzleTypeScriptNode

Por que isso é importante

Dominar filtros e ordenações com Drizzle ORM garante consultas de banco de dados mais performáticas, legíveis e escaláveis. Saber como aplicar operadores corretamente é essencial para filtrar dados com precisão e controlar a exibição dos resultados em tempo real.

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

Saiba mais →

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

Domine React e Node com o CrazyStack

Aprenda técnicas avançadas de React com nosso curso completo