Sequelize para JavaScript (Node.js): guía completa con ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

1. ¿Qué es Sequelize y para qué sirve?

\n\n

Sequelize es una potente biblioteca ORM (Object-Relational Mapping) para Node.js que admite el trabajo con bases de datos relacionales: PostgreSQL, MySQL, MariaDB, SQLite y Microsoft SQL Server. ORM permite a los desarrolladores interactuar con la base de datos utilizando un enfoque orientado a objetos en lugar de escribir consultas SQL puras.

\n\n

Principales ventajas de usar Sequelize:

\n
    \n
  • Abstracción de SQL — trabajar con tablas a través de objetos y métodos de JavaScript
  • \n
  • Seguridad — protección automática contra inyecciones SQL
  • \n
  • Migraciones — gestión de cambios en el esquema de la base de datos
  • \n
  • Relaciones — implementación sencilla de relaciones entre tablas (1:1, 1:M, M:N)
  • \n
  • Validación — mecanismos integrados de verificación de datos
  • \n
  • Transacciones — soporte para operaciones atómicas
  • \n
\n\n

Sequelize es ideal para crear APIs REST, aplicaciones web con Express.js, bots y cualquier proyecto que requiera un trabajo fiable con bases de datos SQL.

\n\n

2. Instalación

\n\n

La instalación de Sequelize y el controlador para su base de datos se realiza mediante npm:

\n\n
// Paquete base\nnpm install sequelize\n\n// Controlador para PostgreSQL\nnpm install pg pg-hstore\n\n// Controlador para MySQL\nnpm install mysql2\n\n// Controlador para SQLite\nnpm install sqlite3\n\n// Controlador para MSSQL\nnpm install tedious
\n\n

Para un inicio rápido con SQLite (no requiere instalación de servidor):

\n
npm install sequelize sqlite3
\n\n

3. Inicio rápido con ejemplo de código

\n\n

Creemos una aplicación simple para gestionar usuarios:

\n\n
// index.js\nconst { Sequelize, DataTypes, Model } = require('sequelize');\n\n// 1. Conexión a la base de datos (SQLite)\nconst sequelize = new Sequelize({\n  dialect: 'sqlite',\n  storage: './database.sqlite',\n  logging: false // desactiva el registro de consultas SQL\n});\n\n// 2. Definición del modelo User\nclass User extends Model {}\nUser.init({\n  id: {\n    type: DataTypes.INTEGER,\n    autoIncrement: true,\n    primaryKey: true\n  },\n  name: {\n    type: DataTypes.STRING,\n    allowNull: false\n  },\n  email: {\n    type: DataTypes.STRING,\n    allowNull: false,\n    unique: true,\n    validate: {\n      isEmail: true\n    }\n  },\n  age: {\n    type: DataTypes.INTEGER,\n    validate: {\n      min: 0,\n      max: 150\n    }\n  }\n}, {\n  sequelize,\n  modelName: 'User',\n  timestamps: true // añade createdAt y updatedAt\n});\n\n// 3. Sincronización con la BD y operaciones de prueba\nasync function main() {\n  await sequelize.sync({ force: true }); // crea la tabla de nuevo\n  console.log('Tabla User creada');\n\n  // Creación de usuario\n  const user = await User.create({\n    name: 'Iván Petrov',\n    email: 'ivan@example.com',\n    age: 30\n  });\n  console.log('Usuario creado:', user.toJSON());\n\n  // Búsqueda de todos los usuarios\n  const users = await User.findAll();\n  console.log('Todos los usuarios:', JSON.stringify(users, null, 2));\n\n  // Búsqueda por ID\n  const foundUser = await User.findByPk(1);\n  console.log('Usuario encontrado:', foundUser.name);\n\n  // Actualización\n  await User.update({ age: 31 }, { where: { id: 1 } });\n  console.log('Edad actualizada');\n\n  // Eliminación\n  await User.destroy({ where: { id: 1 } });\n  console.log('Usuario eliminado');\n}\n\nmain().catch(console.error);
\n\n

4. Métodos y funciones principales

\n\n

4.1. Sequelize.define() / Model.init()

\n

Descripción: Definición del modelo (tabla) especificando los campos y sus tipos.

\n

Parámetros:

\n

Recommendations