为你的应用程序添加 Sequelize

简介

在开发 Web 应用程序和其他服务器端应用程序时,我们需要对数据库进行规划和管理。 Sequelize 是一个基于 Promise 的 ORM(对象关系映射)工具,专门用于 Node.js。它支持 MySQL,PostgreSQL,SQLite 和 Microsoft SQL Server 等主要数据库。在本文中,我将为你提供有关如何为你的应用程序集成 Sequelize 的详细指导。

安装 Sequelize

在开始使用 Sequelize 之前,你需要通过 npm 或 yarn 把 Sequelize 安装到你的项目中。打开终端并运行以下命令:

--- ------- ------ ---------

---- --- ---------

添加数据库连接

在使用 Sequelize 之前,你需要确定数据库的连接配置。以下示例演示如何在应用程序中配置 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:

--- ------- -------- -------------

---- ------ --- -------------

要初始化 Sequelize 项目,请在项目根目录下打开终端并运行以下命令:

--------- ----

这将创建 configmodelsmigrations 三个文件夹。

为了开始编写迁移,请使用以下命令基于时间戳和迁移名称创建迁移文件:

--------- ---------------- ------ --------------

此命令将在 migrations 文件夹中创建一个新的 JavaScript 文件,其中包含时间戳。

以下示例显示如何在迁移文件中添加新的表格:

---- --------

-------------- - -
  --- ---------------- ---------- -- -
    ------ ----------------------------------- -
      --- -
        ---------- ------
        -------------- -----
        ----------- -----
        ----- -----------------
      --
      ------ -
        ----- ----------------
      --
      ----- -
        ----- --------------
      --
      ---------- -
        ---------- ------
        ----- --------------
      --
      ---------- -
        ---------- ------
        ----- --------------
      -
    ---
  --

  ----- ---------------- ---------- -- -
    ------ ----------------------------------
  -
--

在这个例子中,createTable 方法将创建一个名为 Posts 的新表,在表中包含 id、title、body、createdAt 和 updatedAt 五个字段。allowNull 属性表示该列是否允许 Null 值,primaryKey 属性表示该列是否是主键。

当你运行 sequelize db:migrate 命令时,Sequelize CLI 将执行 up 方法中的代码,因此将在数据库中创建新表。

执行 CRUD 操作

Sequelize 提供了一组方法来处理创建、读取、更新和删除数据的操作。以下示例演示如何将 User 模型与数据库集成以执行这些操作:

创建

要创建新的用户,请使用以下代码:

-------------
  ---------- -------
  --------- ------
  ------ -----------------------
  --------- ----------
------------ -- -
  ---------------------------
-------------- -- -
  --------------------- -- --- ------ -------
---

要读取所有用户,请使用以下代码:

------------------------- -- -
  -------------------
-------------- -- -
  --------------------- -- ---- ------- -------
---

要根据条件读取单个用户,请使用以下代码:

--------------
  ------ -
    ------ ----------------------
  -
------------ -- -
  ---------------------------
-------------- -- -
  --------------------- -- ---- ------ -------
---

更新

要更新现有用户,请使用以下代码:

-------------
  ---------- ------
-- -
  ------ -
    ------ ----------------------
  -
-------------- -- -
  ---------------------- ---------- --------
-------------- -- -
  --------------------- -- ------ ------ -------
---

删除

要删除现有用户,请使用以下代码:

--------------
  ------ -
    ------ ----------------------
  -
-------------- -- -
  ---------------------- ------- --------
-------------- -- -
  --------------------- -- ------ ------ -------
---

结论

在本文中,我向你展示了如何将 Sequelize 集成到你的应用程序中,并提供了在执行 CRUD 操作时需要注意的一些事项。这将使你能够更好地管理数据库结构并更有效地处理数据访问任务。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/66f78d9bc5c563ced5a28fd0