1. 前言
在 Web 开发中,最常见的数据存储方式是使用数据库。而 ORM (Object Relational Mapping) 则是一种将数据库和面向对象编程语言之间的数据转换技术。ORM 是实现数据持久化的一种方式,其不仅可以简化应用程序的数据操作复杂度,同时也可以有效提高开发效率和代码可维护性。
在本文中,我们将讨论如何在前端应用中使用 RESTful API 和 ORM 实现数据库操作,并探讨一些最佳实践与技巧。
2. 使用 RESTful API 访问数据库
RESTful API(Representational State Transfer Application Programming Interface)是一种构建 API 的软件设计风格,它允许客户端通过 HTTP 请求与服务器进行交互提取信息。当我们使用一个 RESTful API 时,我们与服务器发生的所有交互都遵循这种风格。 RESTful API 通常具有以下特点:
- 客户端和服务器之间的通信是无状态的。
- 它支持多种数据格式,如 XML,JSON 等。
- 它可以使用 HTTP 的各种方法(GET,POST,PUT,DELETE,PATCH 等),实现完全的 CRUD(增删改查)操作。
现代 Web 应用通常使用 RESTful API 从服务器获取数据和更新数据。在前端应用中,我们将使用 JavaScript 发起 RESTful API 请求,获得来自服务器的 JSON 数据,然后对这些数据进行操作和展示。
这里我们使用一个示例数据库表 user
来说明如何使用 RESTful API 访问数据库(假设我们已经用 Express 和 Sequelize 搭建好了服务器)。
3. 使用 ORM 操作数据库
Sequelize 是我们在 Node.js 应用中使用最广泛的 ORM。它支持多种关系型数据库,并且提供了高效,简单且易于使用的 API。下面让我们来看看如何使用 Sequelize 操作数据库。
3.1 连接数据库
首先,我们需要在我们的应用中创建一个 Sequelize 实例。这个实例是连接到我们的数据库,并允许我们执行数据操作的主要接口。
const Sequelize = require("sequelize"); const sequelize = new Sequelize({ dialect: "sqlite", storage: "path/to/database.sqlite", });
这里我们使用 SQLite 作为示例数据库,但是 Sequelize 也支持 MySQL,PostgreSQL 和 Microsoft SQL Server 等多种数据库。
3.2 定义模型
接下来,我们需要定义一个数据模型,以便我们可以对数据库表进行操作。在 Sequelize 中,模型定义包含表的名称,每个列的名称,数据类型和列之间的关系。
// javascriptcn.com code example const User = sequelize.define("user", { firstName: { type: DataTypes.STRING, allowNull: false, }, lastName: { type: DataTypes.STRING, allowNull: false, }, email: { type: DataTypes.STRING, unique: true, }, });
上面的代码定义了一个名为 user
的模型,并指定了模型中的列 (firstName,lastName,email)。我们还可以使用验证器指定每个列的数据约束。
3.3 对数据库进行 CRUD 操作
完成模型的定义后,我们可以通过 Sequelize 实例执行多种数据库操作,如创建,读取,更新和删除。
3.3.1 创建
User.create({ firstName: "John", lastName: "Doe", email: "john.doe@example.com", });
上面的代码会通过模型向数据库中添加一条新记录。
3.3.2 读取
// javascriptcn.com code example // 获取所有用户数据 User.findAll().then((users) => { console.log(users); }); // 获取特定 ID 的用户数据 User.findByPk(1).then((user) => { console.log(user); }); // 获取符合特定条件的用户数据 User.findAll({ where: { firstName: "John" }, }).then((users) => { console.log(users); });
上面的代码可以分别获取所有数据、特定 ID 的数据和符合特定条件的数据。
3.3.3 更新
User.update( { firstName: "Jane" }, { where: { id: 1 }, } );
上面的代码可以更新特定 ID 的记录中的 firstName 列的值。
3.3.4 删除
User.destroy({ where: { id: 1 }, });
上面的代码可以删除指定 ID 的记录。
4. 最佳实践与技巧
4.1 使用事务
在表中执行多个 CRUD 操作时,可能需要使用事务来确保数据操作的完整性。事务是对数据库进行一系列相关操作的操作单元,当它们全部成功完成时,才被视为有效操作。如果其中一个操作失败了,整个操作就会回滚,以便它们都不能保存到数据库中。
在 Sequelize 中,我们可以使用如下代码创建和使用事务:
// javascriptcn.com code example await sequelize.transaction(async (t) => { await User.create( { firstName: "Jane", lastName: "Doe", email: "jane.doe@example.com", }, { transaction: t } ); // 再执行其他的数据创建/更新等操作 await t.commit(); });
该代码段将创建一个新的事务,然后在其中进行一些数据操作。在事务中,您可以执行多个数据操作,并且只有当它们全部成功时,才会将更改保存到数据库中。t.commit()指令会告诉 Sequelize 在这个点上提交更改,或者如果任何操作发生错误,就回滚操作。
4.2 加密数据
在 Web 应用程序中,保护用户的敏感信息(如密码)非常重要。为了确保这些数据在数据库中得到保护,我们可以使用加密算法。这里我们可以使用 Node.js 中的 bcryptjs 库实现数据加密,并在创建用户时将加密后的密码存储在数据库中。
const bcrypt = require("bcryptjs"); User.create({ firstName: "Jane", lastName: "Doe", email: "jane.doe@example.com", password: bcrypt.hashSync("mypassword", 10), });
4.3 使用 Sequelize CLI
Sequelize CLI(命令行界面)是一个用于创建、迁移和管理 Sequelize 应用程序的工具。通过它,您可以使用命令创建和管理模型、数据库和迁移,而无需编写任何代码。您可以使用如下命令来安装 Sequelize CLI:
npm install --save-dev sequelize-cli
安装完毕后,您可以使用以下命令来创建数据库、迁移和模型等:
// javascriptcn.com code example # 创建一个新数据库,并运行迁移 npx sequelize-cli db:create npx sequelize-cli db:migrate # 撤销最近运行的迁移 npx sequelize-cli db:migrate:undo # 创建一个新模型 npx sequelize-cli model:generate --name User --attributes firstName:string,lastName:string,email:string,password:string
5. 结论
本文介绍了如何在前端应用中使用 RESTful API 和 ORM(使用 Sequelize)来访问数据库。我们还讨论了一些最佳实践和技巧,如使用事务来确保数据操作的完整性、加密数据以保护用户的敏感信息和使用 Sequelize CLI 管理和使用 Sequelize 应用程序。希望本文对您在使用 ORM 操作数据库时有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6735091c0bc820c5824c5074