在现代 Web 开发中,ORM (对象关系映射) 框架在数据库交互方面变得越来越流行。因为 ORM 可以方便地将应用程序中的对象与数据库中的关系表相互映射,从而简化了开发流程。 Sequelize 是一个流行的 Node.js ORM 框架,可以与 Express.js 结合使用。本文将为您提供 Sequelize 的使用指南,涵盖其基础和高级功能。
安装 Sequelize
在开始使用 Sequelize 之前,必须先安装它。要安装 Sequelize,请打开您的终端并运行以下命令:
npm install sequelize
连接数据库
使用 Sequelize 之前,必须设置与数据库的连接。您可以使用以下代码连接 MySQL 数据库:
const Sequelize = require('sequelize'); const sequelize = new Sequelize('database', 'username', 'password', { host: 'localhost', dialect: 'mysql' });
在上面的代码中,您必须传递数据库名称,用户名和密码。本例中数据库的主机是 localhost,使用的 SQL 方言是 MySQL。除了 MySQL 外,Sequelize 还支持 PostgreSQL、SQLite 和 Microsoft SQL Server。
创建模型
在 Sequelize 中,模型类似于数据库中的关系表。要创建模型,请使用以下代码:
-- -------------------- ---- ------- ----- --------- - --------------------- ----- --------- - --- --------------------- ----------- ----------- - ----- ------------ -------- ------- --- ----- ---- - ------------------------ - ---------- ----------------- --------- ----------------- ------ ---------------- --- -----------------
在上面的代码中,我们定义了一个名为 User 的模型,并在其内部定义了三个字段 firstName、lastName 和 email。
查询数据
要从数据库中查询数据,请使用以下代码:
User.findAll().then(users => { console.log(users) })
在上面的代码中,findAll() 方法将查询所有用户,并通过 Promise 返回结果。您可以使用 then() 方法来处理结果。
添加/编辑数据
要添加或编辑数据,请使用以下代码:
-- -------------------- ---- ------- ------------- ---------- ------- --------- ------ ------ -------------------- ---------- -- - ----------------- --------- -- ----------------------- -------- ------- ---- ------------ -- - ----------------- --------- --
在上面的代码中,我们使用 create() 方法添加了一个新用户。使用 update() 方法,我们将第一个用户的 firstName 更改为 Jane。
删除数据
要从数据库中删除数据,请使用以下代码:
User.destroy({where: {id: 1}}).then(() => { console.log('User deleted') })
在上面的代码中,我们使用 destroy() 方法删除了带有 id 为 1 的用户。
高级查询
Sequelize 提供了许多高级查询功能,例如嵌套联接、分组、排序等。以下是 orderBy 示例:
User.findAll({ order: [ ['firstName', 'ASC'] ] }).then(users => { console.log(users) })
在上面的代码中,我们使用 order 选项按 firstName 升序排序。
结论
在本文中,我们介绍了如何在 Express.js 中使用 Sequelize ORM 框架。我们学习了如何连接数据库、创建和查询模型,以及如何添加、编辑和删除数据。此外,我们还了解了高级查询特性。希望这篇文章能够帮助您开始使用 Sequelize 并加快您的开发速度。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67089a8ed91dce0dc872dc28