Knex.js para JavaScript (Node.js): guia completo com exemplos práticos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Knex.js para JavaScript (Node.js): guia completo com exemplos práticos

1. O que é e para que serve

Knex.js é um query builder SQL poderoso, flexível e de alto desempenho para Node.js. Diferente de bibliotecas ORM (Object-Relational Mapping), como Sequelize ou TypeORM, o Knex.js não tenta abstrair completamente você do SQL. Em vez disso, ele oferece uma API encadeada (chainable) e conveniente para construir consultas SQL programaticamente, mantendo total controle sobre o SQL resultante. Isso torna o Knex.js a escolha ideal para projetos onde desempenho, transparência nas consultas e flexibilidade são essenciais, mas você quer evitar escrever SQL puro com risco de erros de sintaxe e injeção SQL.

O principal objetivo do Knex.js é simplificar a interação com bancos de dados relacionais (PostgreSQL, MySQL, SQLite3, MSSQL, Oracle) a partir do JavaScript. Ele cuida de tarefas rotineiras como escapamento de identificadores e valores (proteção contra injeção SQL), gerenciamento de pool de conexões, migrações de esquema (criação e alteração de tabelas) e semeadura (seeding) de dados de teste. O Knex.js também suporta transações, subconsultas, funções de janela, consultas raw e muito mais, tornando-se uma ferramenta versátil tanto para projetos pequenos quanto para sistemas de alta carga.

Para o site educacional PythonLib, que foca no aprendizado prático, o Knex.js é especialmente interessante. Ele permite que alunos já familiarizados com os fundamentos do SQL migrem rapidamente para escrever código Node.js seguro e eficiente. Aprender Knex.js é uma excelente ponte entre a teoria do SQL e o desenvolvimento backend real. Você não apenas aprende "mágica de ORM", mas entende como cada método se traduz em uma consulta SQL específica — algo crítico para depuração e otimização.

2. Instalação

A instalação do Knex.js é feita através do gerenciador de pacotes npm. Você também precisará instalar o driver do seu banco de dados.

# Instalar o Knex.js
npm install knex --save

# Instalar o driver para PostgreSQL
npm install pg --save

# Instalar o driver para MySQL / MariaDB
npm install mysql2 --save

# Instalar o driver para SQLite3
npm install sqlite3 --save

# Instalar o driver para MSSQL
npm install tedious --save

# Instalar o driver para Oracle
npm install oracledb --save

Importante: O driver do banco de dados é instalado separadamente. O Knex.js o utiliza para interagir diretamente com o BD. Após a instalação, você pode instalar o Knex CLI globalmente para gerenciar migrações e seeds: npm install knex -g.

3. Início rápido — exemplo mínimo funcional

Crie um arquivo app.js e conecte-se a um banco de dados SQLite (não requer instalação de servidor).

// Importar o Knex
const knex = require('knex');

// Configuração de conexão com SQLite
const db = knex({
    client: 'sqlite3', // Tipo de banco de dados
    connection: {
        filename: './mydb.sqlite' // Caminho para o arquivo do banco
    },
    useNullAsDefault: true // Recomendado para SQLite
});

// Função assíncrona para demonstração
async function main() {
    // 1. Criar a tabela 'users', se não existir
    await db.schema.createTableIfNotExists('users', (table) => {
        table.increments('id'); // Chave primária auto-incrementada
        table.string('name');   // Campo de texto
        table.integer('age');   // Campo numérico inteiro
    });

    // 2. Inserir dados
    await db('users').insert({ name: 'Alice', age: 30 });
    await db('users').insert({ name: 'Bob', age: 25 });

    // 3. Selecionar todos os registros
    const users = await db.select('*').from('users');
    console.log('Todos os usuários:', users);

    // 4. Selecionar com condição
    const youngUsers = await db('users').where('age', '<', 28)                    

Recommendations