Sequelize for JavaScript (Node.js): 完整指南及示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

1. 什么是 Sequelize 以及为什么需要它

\n\n

Sequelize 是一个用于 Node.js 的强大 ORM(对象关系映射)库,支持与关系型数据库协同工作:PostgreSQL、MySQL、MariaDB、SQLite 和 Microsoft SQL Server。ORM 允许开发者使用面向对象的方法与数据库交互,而不是编写纯 SQL 查询。

\n\n

使用 Sequelize 的主要优势:

\n
    \n
  • SQL 抽象 — 通过 JavaScript 对象和方法操作表
  • \n
  • 安全性 — 自动防止 SQL 注入
  • \n
  • 迁移 — 管理数据库模式变更
  • \n
  • 关系 — 轻松实现表之间的关联(1:1, 1:M, M:N)
  • \n
  • 验证 — 内置数据校验机制
  • \n
  • 事务 — 支持原子操作
  • \n
\n\n

Sequelize 非常适合创建 REST API、基于 Express.js 的 Web 应用程序、机器人以及任何需要可靠 SQL 数据库支持的项目。

\n\n

2. 安装

\n\n

通过 npm 安装 Sequelize 和数据库驱动程序:

\n\n
// 基础包\nnpm install sequelize\n\n// PostgreSQL 驱动程序\nnpm install pg pg-hstore\n\n// MySQL 驱动程序\nnpm install mysql2\n\n// SQLite 驱动程序\nnpm install sqlite3\n\n// MSSQL 驱动程序\nnpm install tedious
\n\n

使用 SQLite 快速启动(无需安装服务器):

\n
npm install sequelize sqlite3
\n\n

3. 快速入门及代码示例

\n\n

创建一个简单的用户管理应用程序:

\n\n
// index.js\nconst { Sequelize, DataTypes, Model } = require('sequelize');\n\n// 1. 连接到数据库 (SQLite)\nconst sequelize = new Sequelize({\n  dialect: 'sqlite',\n  storage: './database.sqlite',\n  logging: false // 关闭 SQL 查询日志\n});\n\n// 2. 定义 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 // 添加 createdAt 和 updatedAt\n});\n\n// 3. 同步数据库并执行测试操作\nasync function main() {\n  await sequelize.sync({ force: true }); // 重新创建表\n  console.log('User 表已创建');\n\n  // 创建用户\n  const user = await User.create({\n    name: '伊万·彼得罗夫',\n    email: 'ivan@example.com',\n    age: 30\n  });\n  console.log('已创建用户:', user.toJSON());\n\n  // 查找所有用户\n  const users = await User.findAll();\n  console.log('所有用户:', JSON.stringify(users, null, 2));\n\n  // 按 ID 查找\n  const foundUser = await User.findByPk(1);\n  console.log('找到用户:', foundUser.name);\n\n  // 更新\n  await User.update({ age: 31 }, { where: { id: 1 } });\n  console.log('年龄已更新');\n\n  // 删除\n  await User.destroy({ where: { id: 1 } });\n  console.log('用户已删除');\n}\n\nmain().catch(console.error);
\n\n

4. 主要方法和函数

\n\n

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

\n

描述: 定义模型(表),指定字段及其类型。

\n

参数:

\n

推荐