如何使用 MongoDB 来实现 GraphQL 的查询

阅读时长 7 分钟读完

GraphQL 是一种用于构建 API 的查询语言,它可以让前端开发者更加灵活地获取所需的数据,并且可以避免过多的网络请求。而 MongoDB 则是一个非关系型数据库,它可以存储大量的非结构化数据。本文将介绍如何使用 MongoDB 来实现 GraphQL 的查询,旨在帮助前端开发者更好地利用这两种技术。

准备工作

在开始之前,我们需要先安装一些必要的工具和依赖。首先,我们需要安装 MongoDB 数据库和 GraphQL 的相关库。可以使用以下命令进行安装:

创建 GraphQL Schema

首先,我们需要定义一个 GraphQL Schema,它定义了我们将要查询的数据结构。在本例中,我们将创建一个简单的图书列表,包含书名、作者和出版日期。我们可以使用以下代码来定义 GraphQL Schema:

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

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

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

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

在上面的代码中,我们定义了一个名为 BookType 的 GraphQLObjectType,它包含了 titleauthorpublishedDate 三个字段。然后我们定义了一个名为 RootQuery 的 GraphQLObjectType,它包含了一个名为 books 的字段,类型为 BookType 的列表。最后我们将 RootQuery 包装成了一个 GraphQLSchema 对象,并将其导出。

连接 MongoDB 数据库

接下来,我们需要连接到 MongoDB 数据库,并定义一个 Mongoose 模型来操作数据。我们可以使用以下代码来完成这些步骤:

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

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

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

在上面的代码中,我们使用 Mongoose 连接到了名为 graphql-example 的 MongoDB 数据库,并定义了一个名为 Book 的模型。

实现查询逻辑

最后,我们需要在 GraphQL Schema 中实现查询逻辑,即如何从 MongoDB 中查询数据并返回给前端。我们可以使用以下代码来完成这些步骤:

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

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

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

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

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

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

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

在上面的代码中,我们在 RootQuery 中定义了一个名为 books 的字段,类型为 BookType 的列表。在 resolve 函数中,我们使用 Book.find() 来查询所有的书籍,并将其返回给前端。

测试查询

现在我们已经完成了 GraphQL Schema 和查询逻辑的编写。接下来,我们可以使用以下代码来测试我们的查询:

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

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

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

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

在上面的代码中,我们使用 Express 框架创建了一个 HTTP 服务器,并将 GraphQL Schema 传递给了 graphqlHTTP 中间件。我们还启用了 GraphiQL 界面,这是一个交互式的 GraphQL 开发工具,可以帮助我们快速测试和调试查询。最后,我们将服务器启动在了 3000 端口上。

现在,我们可以在浏览器中访问 http://localhost:3000/graphql,进入 GraphiQL 界面。在左侧的查询编辑器中输入以下查询语句:

然后点击右上角的 “运行” 按钮,就可以看到我们从 MongoDB 中查询到的所有书籍信息了。

总结

本文介绍了如何使用 MongoDB 来实现 GraphQL 的查询。通过定义 GraphQL Schema 和实现查询逻辑,我们可以从 MongoDB 中获取所需的数据,并使用 GraphiQL 工具进行测试和调试。这种方式可以让前端开发者更加灵活地获取数据,同时也能够避免过多的网络请求,提高系统的性能和可靠性。

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

纠错
反馈

纠错反馈