简介
在开发 Web 应用程序和其他服务器端应用程序时,我们需要对数据库进行规划和管理。 Sequelize 是一个基于 Promise 的 ORM(对象关系映射)工具,专门用于 Node.js。它支持 MySQL,PostgreSQL,SQLite 和 Microsoft SQL Server 等主要数据库。在本文中,我将为你提供有关如何为你的应用程序集成 Sequelize 的详细指导。
安装 Sequelize
在开始使用 Sequelize 之前,你需要通过 npm 或 yarn 把 Sequelize 安装到你的项目中。打开终端并运行以下命令:
npm install --save sequelize
或
yarn add sequelize
添加数据库连接
在使用 Sequelize 之前,你需要确定数据库的连接配置。以下示例演示如何在应用程序中配置 MySQL 数据库连接:
const Sequelize = require('sequelize'); const sequelize = new Sequelize('database_name', 'user_name', 'password', { host: 'localhost', dialect: 'mysql' });
在这个例子中,我们使用了 Sequelize 和 MySQL 模块。Sequelize 构造函数接受四个参数:数据库名称,用户名,密码和选项配置。选项配置允许你指定服务器主机名和使用的数据库方言。
定义模型
在使用 Sequelize 时,你需要定义模型或表架构。 Sequelize 模型是普通的 JavaScript 类,它与数据库表映射一对一关系。以下示例演示如何定义一个 User 模型:
-- -------------------- ---- ------- ----- ---- - ------------------------ - ---------- - ----- ----------------- ---------- ----- -- --------- - ----- ----------------- ---------- ----- -- ------ - ----- ----------------- ---------- ------ ------- ---- -- --------- - ----- ----------------- ---------- ----- - ---
在这个例子中,我们定义了一个 User 模型来表示用户。这个模型有四个属性:firstName、lastName、email 和 password。数据类型和合法性规则可以通过属性对象来指定。
type
属性指定了该列数据存储的数据类型。对于无法指定长度的字符串列,可以将字符串类型设置为 Sequelize.STRING,这将使该列使用默认值 255 字符。如果你需要更长的字符串,你可以通过将 type
设置为 Sequelize.TEXT 或指定一个非负整数作为 type
的第二个参数来扩大字符串的长度。
所有的 Sequelize 模型都继承自 Sequelize.Model。你可以在模型定义中使用它来添加新的或自定义的实例或静态方法。
数据库迁移
当你需要更改数据库的结构时,你需要进行数据库迁移。例如,你可能需要添加新的表或列,更改数据类型或在表中添加新的行。
Sequelize 提供了一个流行而方便的迁移工具,称为 Sequelize CLI。以下示例显示如何在 Node.js 中使用 Sequelize CLI:
npm install --global sequelize-cli
或
yarn global add sequelize-cli
要初始化 Sequelize 项目,请在项目根目录下打开终端并运行以下命令:
sequelize init
这将创建 config
、models
和 migrations
三个文件夹。
为了开始编写迁移,请使用以下命令基于时间戳和迁移名称创建迁移文件:
sequelize migration:create --name migration_name
此命令将在 migrations
文件夹中创建一个新的 JavaScript 文件,其中包含时间戳。
以下示例显示如何在迁移文件中添加新的表格:
-- -------------------- ---- ------- ---- -------- -------------- - - --- ---------------- ---------- -- - ------ ----------------------------------- - --- - ---------- ------ -------------- ----- ----------- ----- ----- ----------------- -- ------ - ----- ---------------- -- ----- - ----- -------------- -- ---------- - ---------- ------ ----- -------------- -- ---------- - ---------- ------ ----- -------------- - --- -- ----- ---------------- ---------- -- - ------ ---------------------------------- - --
在这个例子中,createTable
方法将创建一个名为 Posts 的新表,在表中包含 id、title、body、createdAt 和 updatedAt 五个字段。allowNull
属性表示该列是否允许 Null 值,primaryKey
属性表示该列是否是主键。
当你运行 sequelize db:migrate
命令时,Sequelize CLI 将执行 up
方法中的代码,因此将在数据库中创建新表。
执行 CRUD 操作
Sequelize 提供了一组方法来处理创建、读取、更新和删除数据的操作。以下示例演示如何将 User 模型与数据库集成以执行这些操作:
创建
要创建新的用户,请使用以下代码:
-- -------------------- ---- ------- ------------- ---------- ------- --------- ------ ------ ----------------------- --------- ---------- ------------ -- - --------------------------- -------------- -- - --------------------- -- --- ------ ------- ---
读
要读取所有用户,请使用以下代码:
User.findAll().then(users => { console.log(users); }).catch(error => { console.error('Unable to read users', error); });
要根据条件读取单个用户,请使用以下代码:
-- -------------------- ---- ------- -------------- ------ - ------ ---------------------- - ------------ -- - --------------------------- -------------- -- - --------------------- -- ---- ------ ------- ---
更新
要更新现有用户,请使用以下代码:
-- -------------------- ---- ------- ------------- ---------- ------ -- - ------ - ------ ---------------------- - -------------- -- - ---------------------- ---------- -------- -------------- -- - --------------------- -- ------ ------ ------- ---
删除
要删除现有用户,请使用以下代码:
-- -------------------- ---- ------- -------------- ------ - ------ ---------------------- - -------------- -- - ---------------------- ------- -------- -------------- -- - --------------------- -- ------ ------ ------- ---
结论
在本文中,我向你展示了如何将 Sequelize 集成到你的应用程序中,并提供了在执行 CRUD 操作时需要注意的一些事项。这将使你能够更好地管理数据库结构并更有效地处理数据访问任务。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66f78d9bc5c563ced5a28fd0