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
- eq: Verifica se um campo é igual a um valor (Equal)
- ne: Verifica se um campo é diferente de um valor (Not Equal)
- inArray: Checa se o valor de uma coluna está dentro de um array
- like: Compara padrões (útil para strings e buscas parciais)
- notLike: Exclui com base em padrões
- ilike: Like com case insensitive
- 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
- Passo 1: Importar operadores como
eqedescdos pacotes do Drizzle. - Passo 2: Fazer o
selectdiretamente emschema.questions. - Passo 3: Definir o
wherecomeq(schema.questions.roomId, roomId). - 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