1. O que é Sequelize e para que serve
\n\nSequelize é 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\nPrincipais 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
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\n2. Instalação
\n\nA 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\nPara início rápido com SQLite (não requer instalação de servidor):
\nnpm install sequelize sqlite3\n\n3. Início rápido com exemplo de código
\n\nVamos 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\n4. Métodos e funções principais
\n\n4.1. Sequelize.define() / Model.init()
\nDescrição: Definição do modelo (tabela) com especificação dos campos e seus tipos.
\nParâmetros:
\n- \n
modelName— nome do modelo \n attributes— objeto com definição dos campos \n options— configurações do modelo (tableName, timestamps, indexes, etc.) \n
Também na biblioteca
ZXing para Kotlin: guia completo com exemplos práticos
Geolocalização e Mapas em TypeScript: Bibliotecas, API e Exemplos de Código
Trabalhando com datas em Swift: Foundation e DateFormatter
Quartz.NET para C# (.NET): Guia completo com exemplos práticos