什么是 Sequelize ORM?
Sequelize 是一款基于 Node.js 的 ORM(Object-Relational Mapping),可以操作 MySQL、PostgreSQL、SQLite 和 Microsoft SQL Server 等关系型数据库。Sequelize 将数据库中的表映射为模型(Model),并通过模型对数据库进行增、删、改、查等操作。Sequelize 的使用便捷并且具有良好的兼容性,可以轻松地实现与多种数据库之间的互操作。
如何安装和配置 Sequlize?
在 Node.js 开发环境中使用 Sequelize,需要安装 Sequelize 和数据库驱动(如 mysql2、pg 或 sqlite3 等)。可以使用 npm 进行安装。
npm install sequelize mysql2
安装完成后,在项目中导入 Sequelize 和数据库驱动,然后创建 Sequelize 实例。
const Sequelize = require('sequelize'); const sequelize = new Sequelize('database', 'username', 'password', { dialect: 'mysql', host: 'localhost' });
在上面的代码中,我们使用了 MySQL 数据库,并且创建了一个名为 sequelize
的 Sequelize 实例,并传入相应的参数,分别是数据库的名称、用户名和密码。
如何定义模型?
在 Sequelize 中,模型是对数据库表的抽象。Sequelize 会自动根据模型定义创建对应的表,并维护表的结构。可以使用 sequelize.define()
方法定义模型。
下面是一个用户模型的定义示例:
-- -------------------- ---- ------- ----- ---- - ------------------------ - --- - ----- ------------------ ----------- ----- -------------- ---- -- ----- - ----- ---------------------- ---------- ----- -- --------- - ----- ---------------------- ---------- ----- -- ------ - ----- ---------------------- ------- ----- ---------- ----- - -- - ----------- ----- ------------ ----- ---------- ------- ---展开代码
在上面的代码中,我们创建了一个名为 User
的模型,并指定了该模型对应的数据库表名为 users
。模型定义包含了四个属性,分别是 id
、name
、password
和 email
。其中,id
是主键,使用 autoIncrement
自动递增;name
、password
和 email
属性都是字符串类型,并且 name
和 password
不能为空,email
是唯一的。
在模型定义中,还可以指定一些其他的属性,如 timestamps
、underscored
等。timestamps
表示是否自动添加 createdAt
和 updatedAt
两个时间戳字段,underscored
表示是否使用下划线作为字段名的分隔符。
如何使用模型进行 CRUD 操作?
在定义好模型后,就可以使用模型进行 CRUD 操作了。以下是一些常用的模型操作示例。
创建记录
const user = await User.create({ name: 'John Doe', password: '123456', email: 'johndoe@example.com' }); console.log(user.id); // 输出创建的记录的 id
在上面的代码中,我们使用 User.create()
方法,创建了一条记录,并将记录插入到 users
表中。create()
方法会返回一个 Promise 对象,当创建成功时,会返回插入的记录对象。我们可以通过访问该对象的属性,如 id
,来获取插入的记录的信息。
读取记录
const users = await User.findAll(); console.log(users.length); // 输出 users 表中的记录数
在上面的代码中,我们使用 User.findAll()
方法,读取了 users
表中的所有记录,并将记录以数组的形式返回。我们可以通过访问数组的 length
属性,来获取表中的记录数。
除了读取所有记录之外,还可以使用 findById()
、findOne()
、findAndCountAll()
等方法,读取指定的记录。这些方法都支持传入一些查询条件,如 where
、order
、limit
等。
更新记录
const user = await User.findOne({ where: { id: 1 } }); user.name = 'Jane Doe'; await user.save();
在上面的代码中,我们首先使用 User.findOne()
方法,查找了 id
为 1
的记录,并将其修改了 name
属性。然后,我们调用了 user.save()
方法,将修改后的记录更新到 users
表中。
除了调用对象的 save()
方法之外,还可以使用 update()
方法进行批量更新操作。
删除记录
await User.destroy({ where: { id: 1 } });
在上面的代码中,我们使用 User.destroy()
方法,删除了 id
为 1
的记录。
总结
在这篇文章中,我们介绍了如何安装和配置 Sequelize,如何定义模型以及如何使用模型进行 CRUD 操作。Sequelize 是一款非常优秀的 ORM 库,可以轻松地实现与多种数据库之间的互操作,非常适合 Node.js 开发中使用。如果您还没有使用过 Sequelize,不妨尝试使用一下,体验一下它带来的方便和便捷。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64816ea948841e98940e2d04