Sequelize:如何在 Node.js 中运行 Migrations?

阅读时长 4 分钟读完

Sequelize:如何在 Node.js 中运行 Migrations?

Sequelize 是一个强大的 ORM 框架,用于 Node.js 中的 PostgreSQL,MySQL,SQLite 和 MSSQL 数据库。使用 Sequelize 可以轻松地连接和管理数据库。Sequelize 还提供了一种功能称为 Migrations,它允许您管理数据库架构和版本控制。 在本文中,我们将深入了解 Sequelize Migrations 并学习如何在 Node.js 中运行它们。

什么是 Migrations?

Migrations 是一种用于处理数据库架构变更的机制。 在开发应用程序时,您可能需要对数据库进行更改,例如添加或删除新表,更改列的数据类型或添加新列等。 Sequelize Migrations 提供了一种可重复且可预测的方法来处理这些更改。

与手动管理数据库架构不同,在使用 Migrations 时,您可以将更改记录在代码库中。 这使得团队中的其他人员能够更轻松地查看更改并了解数据库架构的历史记录。

如何创建 Migration?

使用 Sequelize 进行 migrations 通常需要以下步骤:

  1. 安装依赖:

运行以下命令:

  1. 初始化项目:
  1. 生成一个 migration:

运行以下命令:

其中,create-products 是 migration 的名称。会在 migrations 目录中创建 With migration 文件。文件名类似于:yyyy-mm-dd-hhmmssf-create-products.js

  1. Edit Migration File:

打开生成的文件,您可以看到一个空的 migration 文件。在这里,您将添加要更改的数据库架构。以下示例将添加一个名为 Product 的表:

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

  ----- ----- ---------------- ---------- -- -
    ----- ------------------------------------
  -
--
展开代码

此 migration 将创建一个名为 Product 的新表,并添加 name,price,createdAt 和 updatedAt 列。 down 函数回滚操作,即删除 Product 表。

  1. 运行 Migration:

执行以下命令即可运行 migrations:

这将运行所有未运行的 migrations。您可以使用以下命令回滚上面的 migration:

当然,要仅回滚一个 migration,例如 create-products,则可以单独指定它的文件名:

Conculsion:

在本文中,我们学习了 Sequelize Migrations 的工作原理以及如何在 Node.js 中运行它们,从而更好地管理您的数据库架构。使用 Sequelize Migrations,我们可以轻松地处理数据库结构的变化,从而更好地维护和管理整个数据库架构。

完整代码:https://github.com/sequelize/cli/tree/master/examples/sequelize-typescript/migrations

以上就是 Sequelize:如何在 Node.js 中运行 Migrations?的全部内容。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67bc6436a231b2b7eddf81da

纠错
反馈

纠错反馈