Hapi 与 MongoDB 的集成实战

阅读时长 9 分钟读完

随着越来越多的 web 应用程序向前端发展,前端技术的需求也越来越多。其中一项常见的需求是构建一个 robust、可扩展的后端服务。在这个领域,Hapi 是一个广泛使用的 Node.js 框架,而 MongoDB 是一个流行的 NoSQL 数据库,两者结合使用可以帮助我们轻松地构建一个完整的后端服务。本文将介绍如何使用 Hapi 和 MongoDB 集成创建一个相应的后端服务。

Hapi 介绍

Hapi 是一个用于构建 web 应用程序和服务的框架,它支持插件式架构,可轻松地添加和移除功能。Hapi 具有丰富的插件生态系统,使开发者可以更轻松地构建出更加复杂的应用程序。Hapi 还具有类似于 express.js 的路由系统,但是它的路由功能更加完善和强大。在开发 API 或 web 应用程序时,Hapi 是一个非常优秀的选择。

MongoDB 介绍

MongoDB 是一种流行的 NoSQL 数据库,它使用文档模型代替传统的表格模型。MongoDB 适用于存储大量非结构化或半结构化数据,例如用户配置文件或日志记录。与传统数据库相比,MongoDB 具有更高的可伸缩性和更好的灵活性。

Hapi 和 MongoDB 的集成

在这里,我们将使用 Mongoose 来与 MongoDB 进行交互,并通过示例代码说明如何集成 Hapi 和 MongoDB。Mongoose 是一种在 Node.js 中使用 MongoDB 的对象建模工具,它使获取、保存、更新和删除数据变得容易。

安装

首先,要集成 Hapi 和 MongoDB,我们需要安装以下依赖项:

  • @hapi/joi:用于对请求数据进行验证。
  • mongoose:用于访问 MongoDB。

连接 MongoDB

在 Node.js 代码中使用 Mongoose 可以连接 MongoDB。在连接 MongoDB 之前,必须先运行 MongoDB 实例。创建一个名为 server.js 的文件,然后添加以下代码:

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

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

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

以上代码连接了 MongoDB 实例,并使用 hapi 框架创建了一个 web 服务器实例(监听 3000 端口)。

创建模型

现在,我们需要创建一个模式并将其编译成模型。模式指定模型中包含的字段,以及这些字段的数据类型和验证规则。在 server.js 中添加以下代码:

上面的代码定义了一个 { name, age, gender } 的 catSchema,并使用 Mongoose 编译它为 Cat 模型。

添加路由

我们已经定义了 catSchema 和 Cat 模型,现在我们需要在 Hapi 中实现路由。在 server.js 中添加以下代码:

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

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

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

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

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

以上代码添加了 5 个路由:

  • POST /cats: 创建一个新的 cat 记录。
  • GET /cats:获取所有 cat 记录。
  • GET /cats/{id}:获取特定 cat 记录。
  • PUT /cats/{id}:更新特定 cat 记录。
  • DELETE /cats/{id}:删除特定 cat 记录。

验证数据

为了验证传递给路由的数据,我们可以使用 Joi,(npm包)一个 Node.js 库,旨在尽可能方便地进行验证数据。在 POST /cats 路由中添加以下代码:

validate 选项用于在路由处理程序执行之前验证 payload。在这个例子中,我们使用了 Joi 对 payload 中的数据进行了格式验证。

最终而言,server.js 文件应如下所示:

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

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

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

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

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

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

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

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

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

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

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

总结

在本文中,我们介绍了如何使用 Hapi 和 MongoDB 集成,涉及了 Mongoose、模型、路由和验证数据等方面。这个实际例子对于想要学习如何利用这些技术构建自己的 web 应用程序来说非常有用。它展示了如何快速轻松地搭建一个完整的后端服务,并且是一个易于修改和改进的基础。

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

纠错
反馈