在 Hapi 中使用 GraphQL 进行数据查询

阅读时长 8 分钟读完

GraphQL 是一种由 Facebook 开发的查询语言,它可以帮助前端开发者更高效地进行数据查询和获取。在 Hapi 中使用 GraphQL 可以让我们更加方便地查询后端数据,本文将介绍如何在 Hapi 中使用 GraphQL 进行数据查询。

安装 GraphQL

首先,我们需要安装 GraphQL。使用 npm 安装即可:

创建 GraphQL Schema

接下来,我们需要创建一个 GraphQL Schema。Schema 是 GraphQL 中的一个重要概念,它描述了我们的数据结构和查询方式。在 Hapi 中,我们可以使用 graphql-tools 库来创建 Schema:

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

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

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

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

以上代码创建了一个简单的 Schema,其中包含了一个 Query 类型和一个 hello 字段。

集成到 Hapi 中

现在我们已经创建了一个 GraphQL Schema,接下来我们需要将它集成到 Hapi 中。

首先,我们需要安装 graphql-hapigraphiql 两个库:

然后在 Hapi 中注册 GraphQL 插件:

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

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

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

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

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

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

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

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

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

以上代码创建了一个 Hapi 服务器,并注册了 graphqlHapigraphiqlHapi 两个插件。其中 graphqlHapi 插件用于处理 GraphQL 查询,graphiqlHapi 插件用于提供一个 GraphQL 的 Web 界面。

现在我们可以访问 http://localhost:3000/graphiql 来打开 GraphQL Web 界面,并进行查询。

查询数据

下面我们来看一个更加复杂的例子,如何查询一个数据库中的数据。

首先,我们需要安装 sequelizepg 两个库:

然后我们创建一个 User 模型,用于表示一个用户:

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

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

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

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

接下来我们需要修改 Schema,使其能够查询数据库中的数据:

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

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

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

以上代码修改了 Schema,添加了一个 User 类型和一个 users 字段。users 字段的解析器会查询数据库中的所有用户,并返回一个包含所有用户的数组。

最后我们需要将 Schema 集成到 Hapi 中:

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

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

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

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

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

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

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

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

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

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

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

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

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

现在我们可以访问 http://localhost:3000/graphiql 来打开 GraphQL Web 界面,然后进行查询。

例如,我们可以查询所有用户的姓名和年龄:

以上代码会查询所有用户的姓名和年龄,并返回一个 JSON 数组。

总结

本文介绍了如何在 Hapi 中使用 GraphQL 进行数据查询,包括创建 Schema、集成到 Hapi 中和查询数据等方面。希望读者能够通过本文学习到如何使用 GraphQL 提高前端开发效率。

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

纠错
反馈