Hapi 框架的数据库迁移插件——knex.js 使用说明

阅读时长 7 分钟读完

在开发应用的过程中,数据库迁移是一个常见的需求。它可以让我们轻松地管理应用程序的数据库结构。Hapi 是一个流行的 Node.js 应用程序框架,提供了一个叫做 knex.js 的数据库迁移插件,使得数据库迁移变得更加简单。本文将深入探讨 knex.js 的使用方法。

什么是数据库迁移?

在开发应用程序的过程中,我们需要维护数据库的结构和数据。数据库迁移是一种将数据库从一种状态迁移到另一种状态的方式,包括添加、修改或删除表、列和索引等操作。它可以让多个开发者在不同时间工作在同一个数据库上,并确保数据库一致性。

什么是 Knex.js?

knex.js 是一个流行的 Node.js 应用程序框架中的数据库迁移和查询构建器。它可以让您快速构建复杂的 SQL 查询,并与许多流行的数据库一起使用,如 PostgreSQL、MySQL、SQLite、Oracle、MSSQL 和 Amazon Redshift。它还支持 Promise 和事务管理。

以下是如何在 Hapi 应用程序中使用 knex.js 插件的指南。

如何安装 Knex.js 插件

首先,您需要安装 knex.js 模块和驱动程序。例如,如果您选择使用 PostgreSQL 数据库,您需要安装以下模块:

接下来,安装 Hapi-knex-migrationsHapi-knex-hikarpool 插件。这些插件提供了在 Hapi 应用程序中使用 knex.js 的实用程序。

配置 Knex.js 和插件

接下来,您需要在应用程序中配置 knex.js。 这可以通过在应用程序中调用 Knex() 函数完成。例如:

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

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

您需要使用此 knex 对象来进行数据库操作。

现在,您应该配置 Hapi-knex-migrationsHapi-knex-hikarpool 插件。在 Hapi 应用程序中,将以下代码添加到服务器配置 options 中:

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

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

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

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

在此处,请确保传入 Knex 实例 knex,上一步中已经创建。此外,您还需要配置 Migrations directoryConnection Pool

使用 Knex.js 进行数据库迁移

现在,您已经将 knex.js 和插件配置完毕,接下来可以使用 knex.js 进行数据迁移。首先,您需要为项目创建一个迁移:

执行以上命令后,将在 ./db/migrations 目录下生成一个新文件 test_migration.js。这是数据库迁移的文件,您可以在其中编写迁移操作。

例如,添加一个新的表格:

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

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

在上文的代码中,up 函数表示将要执行的迁移操作,并在表中创建两个列 idnamedown 函数表示逆向迁移操作,需要删掉刚刚添加的 test 表格。

执行以下命令进行迁移:

此外,您可以使用以下命令执行特定迁移:

在以上命令中,20210514160409_test_migration 是刚刚创建的迁移文件名。

执行迁移后,您可以在数据库中查看新创建的 test 表格。

如何使用 Knex.js 进行查询

在进行数据库操作时,knex.js 还提供了一种流畅的查询构建器,使得数据库操作变得更加容易。这里简要介绍过一下。例如,以下是如何在 users 表格中获取所有用户的代码:

您还可以通过以下代码向 users 表格中添加数据:

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

要获取特定行,请使用以下代码:

在其中,first() 函数将返回第一个匹配的行。

如何使用 Knex.js 进行事务管理

事务管理是一种将一组数据库操作视为单个单元的技术。如果所有操作都成功,则事务将被提交并成为永久性更改。如果其中一个操作失败,则整个事务将被回滚到它的起点。这可以确保在操作中出现问题时,数据库保持一致性。

以下是如何在 knex.js 中使用事务:

在以上代码中,trx 参数可以用于代替 knex 对象,并且只是具有带有事务管理功能。使用 trx.rollback()trx.commit() 函数可以管理事务。如果不调用 trx.commit() 或调用 trx.rollback(),则事务将被回滚。

总结

通过使用 knex.js 插件和 Hapi-knex-migrations 以及 Hapi-knex-hikarpool 包装器,可以在 Hapi 应用程序中轻松进行数据库迁移。此外,knex.js 还提供了广泛的查询构建器和事务管理功能,使开发更加轻松。希望本文可以帮助您在 Hapi 应用程序中使用 knex.js 时获得成功。

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

纠错
反馈

纠错反馈