Sequelize 是一种流行的 Node.js ORM(对象关系映射)库,可以方便地将应用程序与 SQL 数据库集成。在这篇文章中,我们将介绍在 Express.js 应用程序中使用 Sequelize ORM 的入门指南。
前置要求
在阅读本文之前,您需要对以下技术有一定的了解:
- Node.js 和 Express.js 框架;
- SQL 数据库和相关概念(例如表、列、主键、外键等);
- JavaScript 和 ES6,特别是 Promise 和 async/await。
如果您不熟悉其中某些技术,请先学习相关知识。
安装 Sequelize
要使用 Sequelize ORM,首先需要安装它。您可以使用 npm 包管理器进行安装:
npm install sequelize
此外,如果您要将 Sequelize 与某个特定的数据库一起使用,请安装相应的数据库驱动程序。例如,要使用 Sequelize 与 MySQL 数据库一起使用,请安装以下软件包:
npm install mysql2
更多数据库驱动程序,请参阅 Sequelize 文档。
定义模型
在 Sequelize 中,您需要定义一个模型来表示数据库中的表。每个模型都有一个名称和一组属性。属性指定了表中的列名称、数据类型、是否允许为空等等。例如,以下代码定义了一个名为 User 的模型:
-- -------------------- ---- ------- ----- - --------- - - --------------------- ----- --------- - --- -------------------------------------------- ----- ---- - ------------------------ - --------- - ----- ----------------- ---------- ----- -- ------ - ----- ----------------- ---------- ----- -- --------- - ----- ----------------- ---------- ----- - ---
此代码定义了一个包含 username、email 和 password 列的 User 模型。每列都是字符串类型,不允许为空。要定义其他数据类型或属性,请参阅 Sequelize 文档。
连接到数据库
在使用 Sequelize ORM 之前,您需要连接到数据库。以下代码示例将建立与 MySQL 数据库的连接:
const { Sequelize } = require('sequelize'); const sequelize = new Sequelize('mysql://user:pass@localhost/db');
此连接将使用 user 和 pass 认证信息连接到本地运行的 MySQL 数据库中的 db 数据库。您应该使用自己的数据库连接详细信息。
创建表
在定义模型后,您需要创建相应的表。可以使用 sync 方法来自动创建或更新数据库表。但是请注意,这是一个不安全的操作,并且不适用于生产环境。在生产环境中,您应该使用数据库迁移工具(例如 Sequelize CLI)来管理表结构变化。
以下代码示例创建了 User 模型对应的表:
(async () => { await sequelize.sync({ force: true }); console.log('All models were synchronized successfully.'); })();
此代码使用了一个异步立即执行函数来调用 sync 方法。force 参数强制删除现有表(如果存在)并重新创建。
添加数据
要向数据库添加数据,请使用 create 方法。以下代码示例创建了一个名为 John 的用户:
const john = await User.create({ username: 'john', email: 'john@example.com', password: 'password' }); console.log(john.toJSON());
这将创建一个名为 John 的用户,并将其添加到 User 表中。create 方法返回一个 Promise,该 Promise 包含表示新行的 Sequelize 模型实例。toJSON 方法将该实例转换为 JSON 对象,以便以可读格式进行输出。
查询数据
要从数据库中检索数据,请使用 findAll 方法。以下代码示例查询了 User 表中的所有用户:
const users = await User.findAll(); console.log(users.map(user => user.toJSON()));
这将返回 User 表中的所有行,并将其作为 Sequelize 模型实例数组返回。map 方法用于将每个实例转换为 JSON 对象格式。
您还可以使用 where 参数来筛选结果。例如,以下代码示例将仅查询符合条件的用户:
const users = await User.findAll({ where: { username: 'john' } }); console.log(users.map(user => user.toJSON()));
更新数据
要更新数据库中的数据,请使用 update 方法。以下代码示例将用户名为 John 的用户的 email 属性更改为 john_new@example.com:
-- -------------------- ---- ------- ----- ------- ------- - ----- ------------- ------ ---------------------- -- - ------ - --------- ------ -- ---------- ---- --- ---------------------------
update 方法返回一个包含更新行数和受影响行的数组。通过将 returning 参数设置为 true,您可以指定返回更新的行作为 Sequelize 模型实例。
删除数据
要从数据库中删除数据,请使用 destroy 方法。以下代码示例将所有 username 为 john 的用户从 User 表中删除:
const count = await User.destroy({ where: { username: 'john' } }); console.log(`${count} user(s) were deleted.`);
此代码将所有满足条件的用户从 User 表中删除,并返回更新的行数。
结论
在这篇文章中,我们介绍了如何在 Express.js 应用程序中使用 Sequelize ORM。我们学习了如何定义模型、连接到数据库、创建表、添加、查询、更新和删除数据。感谢您阅读本文,并希望它可以帮助您快速入门 Sequelize ORM!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/677617f06d66e0f9aa09dd68