简介
Sequelize 是一款 Node.js ORM(Object-Relational Mapping)框架,它支持 MySQL、PostgreSQL、SQLite 和 MSSQL 等多种数据库,并提供了强大的数据模型操作和查询语言,使得开发者可以方便地进行数据库操作,同时也提高了开发效率和代码质量。
安装和配置
在使用 Sequelize 之前,需要先安装和配置相关环境和依赖。具体步骤如下:
- 安装 Node.js 和 npm:在官网下载并安装 Node.js,npm 会随之自动安装。
- 创建项目并初始化:使用命令行工具进入项目目录,执行
npm init
命令并按照提示填写相关信息,生成package.json
文件。 - 安装 Sequelize:执行
npm install sequelize
命令进行安装。 - 安装数据库驱动:根据需要安装相应的数据库驱动,如
npm install mysql2
(MySQL)、npm install pg
(PostgreSQL)等。 - 配置数据库连接:在项目中创建一个
config.json
文件,配置数据库连接信息,如:
-- -------------------- ---- ------- - -------------- - ----------- ------- ----------- --------- ----------- ------- ------- ------------ ---------- ------- - -
数据模型定义
在 Sequelize 中,数据模型是使用 JavaScript 类定义的,类名为表名,类属性为字段名和数据类型。例如,定义一个名为 User
的数据模型:
-- -------------------- ---- ------- ----- - ---------- --------- - - --------------------- ----- --------- - --- ----------------------------------------------------- ----- ---- - ------------------------ - --- - ----- ------------------ ----------- ----- -------------- ---- -- ----- - ----- --------------------- ---------- ----- -- ---- - ----- ------------------ ---------- ----- - --- -------------- - -----
其中,Sequelize
和 DataTypes
分别是 Sequelize 的核心类和数据类型定义,sequelize
是数据库连接实例,define
方法用于定义数据模型。在 define
方法中,第一个参数为表名,第二个参数为字段定义,支持的字段类型包括:
STRING(length)
:字符串类型,length
为长度限制。INTEGER
:整数类型。BIGINT
:长整数类型。FLOAT
:浮点数类型。DOUBLE
:双精度浮点数类型。DECIMAL
:高精度小数类型。BOOLEAN
:布尔类型。DATE
:日期类型。CHAR
:字符类型。TEXT
:文本类型。
其中,primaryKey
表示主键,autoIncrement
表示自增,allowNull
表示是否允许为空。
数据库操作
在定义完数据模型之后,就可以使用 Sequelize 进行数据库操作了。常用的操作包括:
数据库同步
使用 sequelize.sync()
方法可以将数据模型同步到数据库中:
const User = require('./user'); (async () => { await User.sync({ force: true }); // force: true 表示强制同步,会删除已存在的表 console.log('User table has been created'); })();
数据库查询
使用 Model.findAll()
方法可以查询所有记录,使用 Model.findOne()
方法可以查询单条记录,使用 Model.findByPk()
方法可以根据主键查询单条记录:
const User = require('./user'); (async () => { const users = await User.findAll(); // 查询所有记录 const user1 = await User.findOne({ where: { name: 'Tom' } }); // 查询单条记录 const user2 = await User.findByPk(1); // 根据主键查询单条记录 console.log(users, user1, user2); })();
使用 Model.create()
方法可以创建新记录,使用 Model.update()
方法可以更新记录,使用 Model.destroy()
方法可以删除记录:
const User = require('./user'); (async () => { const user = await User.create({ name: 'Tom', age: 18 }); // 创建新记录 await user.update({ age: 20 }); // 更新记录 await user.destroy(); // 删除记录 })();
数据库关联
在 Sequelize 中,可以通过 Model.belongsTo()
、Model.hasOne()
、Model.hasMany()
、Model.belongsToMany()
等方法进行关联操作。例如,定义两个数据模型 User
和 Post
,并进行一对多关联:
-- -------------------- ---- ------- ----- - ---------- --------- - - --------------------- ----- --------- - --- ----------------------------------------------------- ----- ---- - ------------------------ - --- - ----- ------------------ ----------- ----- -------------- ---- -- ----- - ----- --------------------- ---------- ----- -- ---- - ----- ------------------ ---------- ----- - --- ----- ---- - ------------------------ - --- - ----- ------------------ ----------- ----- -------------- ---- -- ------ - ----- --------------------- ---------- ----- -- -------- - ----- --------------- ---------- ----- -- ------- - ----- ------------------ ---------- ----- - --- ------------------ - ----------- -------- --- -------------------- - ----------- -------- --- -------------- - - ----- ---- --
其中,User.hasMany(Post)
表示 User
模型和 Post
模型之间的一对多关系,foreignKey
表示外键,Post.belongsTo(User)
表示 Post
模型和 User
模型之间的多对一关系。
总结
Sequelize 是一款强大的 Node.js ORM 框架,它提供了丰富的数据库操作和查询语言,使得开发者可以方便地进行数据库操作,同时也提高了开发效率和代码质量。本文介绍了 Sequelize 的基础知识和实现方式,包括数据模型定义、数据库操作和数据库关联,希望能够对开发者有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/650ba54a95b1f8cacd5b6435