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 <code>questions</code> em um banco configurado com Drizzle ORM, você precisa montar uma consulta com <code>select</code> , aplicar o <code>where</code> 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 <code>drizzle-orm</code> e precisam ser importados explicitamente para utilizar nos filtros.
Operadores disponíveis no Drizzle ORM
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 <code>result</code> usando <code>await db.select()</code> . Podemos puxar todos os campos de <code>schema.questions</code> e já aplicar o filtro com <code>where</code> , usando o operador <code>eq</code> , comparando o campo <code>schema.questions.roomId</code> com o <code>roomId</code> 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 <code>desc</code> importado de <code>drizzle-orm</code> . Essa função ordena de forma decrescente com base na coluna selecionada.
Atenção
O operador <code>desc</code> também precisa ser importado. Ele aceita qualquer campo declarado no schema, como <code>schema.questions.createdAt</code> .
Montagem da consulta completa
eq e desc dos pacotes do Drizzle.select diretamente em schema.questions .where com eq(schema.questions.roomId, roomId) .orderBy(desc(schema.questions.createdAt)) .Trecho de código simplificado
<code>const result = await db.select().from(schema.questions).where(eq(schema.questions.roomId, roomId)).orderBy(desc(schema.questions.createdAt))</code>
Atenção
Não confunda o operador <code>desc</code> 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
PostgreSQL
Banco relacional compatível com Drizzle
TypeScript
Tipagem estática para total suporte no desenvolvimento
Checklist de Implementação
Continue lendo
Como Resolver Erros de Status Code em Testes Automatizados com Drizzle
O ponto crítico que faz seus testes de API darem errado: como corrigir inconsistências de status e...
Paginação Bun.js e Drizzle: Performance que Impressiona
Como implementar paginação eficiente com Bun.js e Drizzle ORM, alcançando performance superior e código...
Como Usar Interface no TypeScript: Guia Prático
Interfaces são a base da tipagem estrutural no TypeScript. Aprenda a criar contratos de dados claros com exemplos do...
Como Usar Type Alias no TypeScript
Type alias vai além de dar nomes a tipos. Union types, intersection, literal types e composição. Tudo com exemplos...