Knex.js para JavaScript (Node.js): guía completa con ejemplos
1. ¿Qué es Knex.js y para qué sirve?
Knex.js es un potente, flexible y eficiente constructor de consultas SQL (query builder) para Node.js. A diferencia de las bibliotecas ORM (Object-Relational Mapping) como Sequelize o TypeORM, Knex.js no intenta abstraerte por completo del SQL. En su lugar, ofrece una API encadenable (chainable) para construir consultas SQL de forma programática, manteniendo el control total sobre el SQL resultante. Esto convierte a Knex.js en la opción ideal para proyectos donde la velocidad, la transparencia de las consultas y la flexibilidad son clave, pero sin tener que escribir SQL en crudo con el riesgo de errores sintácticos o inyecciones SQL.
El objetivo principal de Knex.js es simplificar la interacción con bases de datos relacionales (PostgreSQL, MySQL, SQLite3, MSSQL, Oracle) desde JavaScript. Se encarga de tareas rutinarias como el escape de identificadores y valores (protección contra inyecciones SQL), la gestión del pool de conexiones, las migraciones del esquema de datos (crear y modificar tablas) y el "sembrado" (seeding) de datos de prueba. Knex.js también soporta transacciones, subconsultas, funciones de ventana, consultas raw y mucho más, lo que lo convierte en una herramienta versátil tanto para proyectos pequeños como para sistemas de alta carga.
Para el sitio educativo PythonLib, que se enfoca en el aprendizaje práctico, Knex.js es especialmente interesante. Permite a los estudiantes que ya conocen los fundamentos de SQL pasar rápidamente a escribir código seguro y eficiente en Node.js. Aprender Knex.js es un puente excelente entre la teoría de SQL y el desarrollo backend real. No solo aprendes "magia" de ORM, sino que entiendes cómo cada método se traduce en una consulta SQL concreta, algo fundamental para la depuración y la optimización.
2. Instalación
La instalación de Knex.js se realiza a través del gestor de paquetes npm. También necesitarás instalar el controlador (driver) para tu base de datos.
# Instalar Knex.js
npm install knex --save
# Instalar el driver para PostgreSQL
npm install pg --save
# Instalar el driver para MySQL / MariaDB
npm install mysql2 --save
# Instalar el driver para SQLite3
npm install sqlite3 --save
# Instalar el driver para MSSQL
npm install tedious --save
# Instalar el driver para Oracle
npm install oracledb --save
Importante: El driver de la base de datos se instala por separado. Knex.js lo utiliza para la comunicación directa con la BD. Después de la instalación, puedes instalar globalmente la CLI de Knex para gestionar migraciones y semillas: npm install knex -g.
3. Inicio rápido — ejemplo mínimo funcional
Crea un archivo app.js y conéctate a una base de datos SQLite (no requiere instalar un servidor).
// Importar Knex
const knex = require('knex');
// Configuración de conexión a SQLite
const db = knex({
client: 'sqlite3', // Tipo de base de datos
connection: {
filename: './mydb.sqlite' // Ruta al archivo de la base de datos
},
useNullAsDefault: true // Recomendado para SQLite
});
// Función asíncrona para la demostración
async function main() {
// 1. Crear la tabla 'users' si no existe
await db.schema.createTableIfNotExists('users', (table) => {
table.increments('id'); // Clave primaria autoincremental
table.string('name'); // Campo de texto
table.integer('age'); // Campo numérico entero
});
// 2. Insertar datos
await db('users').insert({ name: 'Alice', age: 30 });
await db('users').insert({ name: 'Bob', age: 25 });
// 3. Seleccionar todos los registros
const users = await db.select('*').from('users');
console.log('Todos los usuarios:', users);
// 4. Seleccionar con condición
const youngUsers = await db('users').where('age', '<', 28) También en la biblioteca
Trabajo con archivos ZIP en Go (Golang): creación, lectura y extracción de archivos
Trabajo con imágenes: resize, crop en TypeScript
Validación de datos en Kotlin: bibliotecas y enfoques (Kotlin, Java)
Internacionalización (i18n) en PHP: biblioteca gettext y enfoques modernos
Procesamiento de JSON en C# (.NET): guía completa con ejemplos