前言
Sequelize ORM 是一款使用 Node.js 进行数据库操作的框架,它使用了 Promise 进行异步操作,支持 MySQL、PostgreSQL、SQLite 和 Microsoft SQL Server 等多种数据库。在 Sequelize 中,我们可以使用模型 (Model) 来方便地操作数据库,这篇文章将带领读者深入理解 Sequelize 中的模型模块,并提供代码实例。
创建模型
在 Sequelize 中,我们需要先定义模型,然后将它们同步到数据库中。定义模型的过程十分简单,只需要创建一个 JavaScript 类,并继承自 Sequelize.Model 即可。我们先来看一个例子:
-- -------------------- ---- ------- ----- - ---------- --------- - - --------------------- ----- --------- - --- -------------------------------------------------------------- ----- ---- ------- --------------- -- ----------- --- - ---------- ------ -------------- ----- ----------- ----- ----- ----------------- -- --------- - ---------- ------ ----- ---------------- -- --------- - ---------- ------ ----- ---------------- - -- - ---------- ---------- ------ --- ------ -- -- - ----- ----------- ------ ---- --- ----------------- ----- ------ -- ----------- -----
在上面的例子中,我们创建了一个名为 User
的模型,并定义了它的字段和数据类型。Sequelize 提供了多种数据类型,例如 STRING、INTEGER、BOOLEAN 等,可以根据实际需求选择。在定义完模型后,我们还要调用 sync()
方法将它同步到数据库中。这里传入 { force: true }
可以强制重新创建表,会删除已有的表并新建一个空表。
增删改查
在定义了模型后,我们就可以对数据进行增删改查了。Sequelize 提供多种操作方法,这里我们只介绍最常用的几种。
查询
Sequelize 中查询数据的方式有多种。我们可以使用 findAll()
方法查询所有数据:
const users = await User.findAll();
如果要查询某些带条件的数据,可以使用 findAndCountAll()
方法:
const users = await User.findAndCountAll({ where: { age: { [Op.gt]: 18 } } });
上面的代码会查询年龄大于 18 岁的用户信息,并返回数量及数据。
插入
插入数据很简单,直接创建一个模型的实例然后调用 save()
方法即可:
const user = User.build({ username: 'Alice', password: '123456' }); await user.save();
更新
更新数据也很方便,首先我们要获取需要更新的数据,然后通过实例的属性修改并调用 save()
保存即可:
const user = await User.findOne({ where: { username: 'Alice' } }); user.password = '654321'; await user.save();
删除
删除数据则可以直接调用 destroy()
方法:
const user = await User.findOne({ where: { username: 'Alice' } }); await user.destroy();
关联模型
Sequelize 中使用模型进行关联操作也很简单。举个例子,我们现在有两个模型 User 和 Message,一条 Message 只属于一个 User,但一个 User 可以有多条 Message,它们之间的关系是一对多。实现方法如下:
-- -------------------- ---- ------- ----- ---- ------- --------------- -- ----------- -- --- -- - ---------- ---------- ------ --- ----- ------- ------- --------------- -- -------------- ------ ----------------- -------- ---------------- -- - ---------- ---------- --------- --- --------------------- - --- ---------- --- -- ----- ----------------------- - ----------- -------- ---
在上面的代码中,我们使用了 hasMany()
和 belongsTo()
方法来定义关系。注意这里的 as
和 foreignKey
均为可选参数,可以根据实际需求选择使用。
在获取某个用户时,它的消息也可以一起查询出来:
-- -------------------- ---- ------- ----- ---- - ----- -------------- ------ - --- - -- -------- - - ------ -------- --- ---------- - - ---
如果要获取某个消息对应的用户信息,则可以使用以下代码:
-- -------------------- ---- ------- ----- ------- - ----- ----------------- ------ - --- - -- -------- - - ------ ----- ----------- ------------ - - ---
在上面的代码中,我们使用了 attributes
来选择需要返回的字段。
总结
本文深入地介绍了 Sequelize 框架中的模型模块,并提供了详细的操作示例。希望这篇文章可以帮助读者更好地理解 Sequelize 并应用到实际项目中。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6481ad7848841e989412a16a