Sequelize para JavaScript (Node.js): guia completo com exemplos

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

1. O que é Sequelize e para que serve

\n\n

Sequelize é uma poderosa biblioteca ORM (Object-Relational Mapping) para Node.js que suporta trabalho com bancos de dados relacionais: PostgreSQL, MySQL, MariaDB, SQLite e Microsoft SQL Server. ORM permite que desenvolvedores interajam com o banco de dados usando uma abordagem orientada a objetos em vez de escrever consultas SQL puras.

\n\n

Principais vantagens de usar Sequelize:

\n
    \n
  • Abstração SQL — trabalho com tabelas através de objetos e métodos JavaScript
  • \n
  • Segurança — proteção automática contra injeção SQL
  • \n
  • Migrações — gerenciamento de alterações no esquema do banco de dados
  • \n
  • Relacionamentos — implementação simples de relações entre tabelas (1:1, 1:M, M:N)
  • \n
  • Validação — mecanismos integrados de verificação de dados
  • \n
  • Transações — suporte a operações atômicas
  • \n
\n\n

Sequelize é ideal para criar APIs REST, aplicações web com Express.js, bots e qualquer projeto que exija trabalho confiável com bancos de dados SQL.

\n\n

2. Instalação

\n\n

A instalação do Sequelize e do driver para seu banco de dados é feita via npm:

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

Para início rápido com SQLite (não requer instalação de servidor):

\n
npm install sequelize sqlite3
\n\n

3. Início rápido com exemplo de código

\n\n

Vamos criar uma aplicação simples para gerenciar usuários:

\n\n
// index.js\nconst { Sequelize, DataTypes, Model } = require('sequelize');\n\n// 1. Conexão com o banco de dados (SQLite)\nconst sequelize = new Sequelize({\n  dialect: 'sqlite',\n  storage: './database.sqlite',\n  logging: false // desativa logs de consultas SQL\n});\n\n// 2. Definição do 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 // adiciona createdAt e updatedAt\n});\n\n// 3. Sincronização com o BD e operações de teste\nasync function main() {\n  await sequelize.sync({ force: true }); // recria a tabela\n  console.log('Tabela User criada');\n\n  // Criação de usuário\n  const user = await User.create({\n    name: 'João Silva',\n    email: 'joao@example.com',\n    age: 30\n  });\n  console.log('Usuário criado:', user.toJSON());\n\n  // Busca de todos os usuários\n  const users = await User.findAll();\n  console.log('Todos os usuários:', JSON.stringify(users, null, 2));\n\n  // Busca por ID\n  const foundUser = await User.findByPk(1);\n  console.log('Usuário encontrado:', foundUser.name);\n\n  // Atualização\n  await User.update({ age: 31 }, { where: { id: 1 } });\n  console.log('Idade atualizada');\n\n  // Exclusão\n  await User.destroy({ where: { id: 1 } });\n  console.log('Usuário excluído');\n}\n\nmain().catch(console.error);
\n\n

4. Métodos e funções principais

\n\n

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

\n

Descrição: Definição do modelo (tabela) com especificação dos campos e seus tipos.

\n

Parâmetros:

\n

Recommendations