Sequelize es un ORM basado en promesas para Node.js compatible con Postgres, MySQL, MariaDB, SQLite y SQL Server.
Conexión y definición de modelos
const { Sequelize, DataTypes } = require('sequelize');
const sequelize = new Sequelize('postgres://user:pass@localhost:5432/mydb');
const User = sequelize.define('User', {
name: {
type: DataTypes.STRING,
allowNull: false
},
email: {
type: DataTypes.STRING,
unique: true,
validate: { isEmail: true }
}
});
// Sincronizar esquema de base de datos
await sequelize.sync();
Operaciones CRUD
// Crear (Create)
const user = await User.create({ name: 'Alice', email: '[email protected]' });
// Leer (Read)
const users = await User.findAll({
where: { name: 'Alice' },
order: [['createdAt', 'DESC']],
limit: 10
});
// Actualizar (Update)
await User.update({ name: 'Bob' }, { where: { id: 1 } });
// Eliminar (Delete)
await User.destroy({ where: { id: 1 } });
Asociaciones de modelos
User.hasMany(Post);
Post.belongsTo(User);
// Carga impaciente (Eager loading) con include
const userWithPosts = await User.findOne({
where: { id: 1 },
include: [Post]
});