构建 Hapi.js 基础 CRUD 操作功能

阅读时长 8 分钟读完

Hapi.js 是一款非常流行的 Node.js Web 框架,它提供了一系列强大的工具和插件,可以方便地构建 Web 应用程序。在本文中,我们将学习如何使用 Hapi.js 构建一个基础的 CRUD(增删改查)操作功能。

准备工作

在开始本文之前,你需要安装 Node.js 和 npm,以及一些其他的工具:

  • Hapi.js
  • Joi
  • boom
  • sqlite3(本文使用的数据库)

在安装完以上工具之后,我们就可以开始构建我们的 CRUD 功能了。

创建一个 Hapi.js 服务器

首先,我们需要创建一个 Hapi.js 服务器实例,并设置一些基本的路由和处理程序。这里,我们使用 Hapi.js 的 server.route() 方法来创建路由和处理程序。

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

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

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

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

在上述代码中,我们创建了一个简单的路由,它将处理根路径请求并返回一条简单的消息。现在,你可以在浏览器中访问 http://localhost:3000,看到页面上显示了 "Hello, Hapi!" 消息。

连接到数据库

接下来,我们需要将我们的应用程序连接到一个数据库中。在本文中,我们将使用 SQLite3 数据库。首先,我们需要安装 sqlite3 npm 包,并在代码中引入它。

接着,我们需要创建一个 SQLite 数据库实例,并在服务器启动时进行连接。

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

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

在上述代码中,我们使用 SQLite3 的 Database 类创建一个数据库实例,并将其连接到 ./database.db 数据库文件。我们还通过 server.events.on() 方法监听了服务器启动事件,并打印了一条消息到控制台。

创建表格

接下来,我们需要创建一个表格来存储我们的数据。在 SQLite3 中,我们可以使用 SQL 命令来创建一个表格。

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

在上述代码中,我们使用 SQLite3 的 run() 方法执行 SQL 命令来创建一个名为 customers 的表格,并定义了 idnameemail 字段。

实现 CRUD 操作

现在,我们已经准备好实现基本的 CRUD 操作了。我们将使用 Hapi.js 的路由和处理程序来处理这些操作。

查找数据

我们首先要实现的是查询操作。在 Hapi.js 中,我们可以使用 server.route() 方法来设置 GET 请求路由,并使用 SQLite3 的 all() 方法来查询数据库中的数据。

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

在上述代码中,我们使用 Hapi.js 的 server.route() 方法来设置路由和处理程序,当发起 GET 请求 /customers 时,我们使用 SQLite3 的 all() 方法查询 customers 表格,并将查询结果使用 Promise 对象返回。如果查询失败,我们会在控制台输出一条错误信息,并将 Promise 对象 reject。

创建和更新数据

接下来,我们将实现创建和更新数据的操作。在 Hapi.js 中,我们可以使用 server.route() 方法来设置 POST 请求路由,并使用 SQLite3 的 run() 方法来执行 SQL 命令。

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

在上述代码中,我们使用 Hapi.js 的 server.route() 方法来设置路由和处理程序,当发起 POST 请求 /customers 时,我们首先从请求负载中获取 nameemail 数据,并使用 SQLite3 的 run() 方法将数据插入到 customers 表格中。如果插入失败,我们会在控制台输出一条错误信息,并将 Promise 对象 reject。

更新数据的操作与创建数据类似,只需将 SQL 命令中的 INSERT 改为 UPDATE 即可。

删除数据

最后,我们将实现删除数据的操作。在 Hapi.js 中,我们可以使用 server.route() 方法来设置 DELETE 请求路由,并使用 SQLite3 的 run() 方法来执行 SQL 命令。

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

在上述代码中,我们使用 Hapi.js 的 server.route() 方法来设置路由和处理程序,当发起 DELETE 请求 /customers/{id} 时,我们从请求参数中获取到要删除的数据的 id,并使用 SQLite3 的 run() 方法来从 customers 表格中删除对应的数据。

总结

本文介绍了如何使用 Hapi.js 和 SQLite3 构建一个基础的 CRUD 操作功能。我们首先创建了一个 Hapi.js 服务器实例,并连接到了一个 SQLite3 数据库。接着,我们使用 SQL 命令创建了一个表格,并使用 Hapi.js 的路由和处理程序处理了查询、创建、更新和删除操作。如果你正在学习 Hapi.js,本文或许可以帮助到你。

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

纠错
反馈