如何在 GraphQL 中使用 MongoDB?

阅读时长 9 分钟读完

介绍

GraphQL 是一个用于 API 的查询语言,它提供了一种描述数据的方法,允许客户端按需请求需要的数据,而不是像传统的 RESTful API 那样一次性获取所有数据。在之前的文章中,我们已经介绍了 GraphQL 的基础知识和其它重要概念,这里我们将讨论如何在 GraphQL 中使用 MongoDB。

MongoDB 是一种 NoSQL 数据库,它是一个非常流行的数据库,特别适用于大数据应用程序。MongoDB 具有极高的可扩展性、灵活性和速度,并且支持 JSON 格式文档的存储,使得它与 GraphQL 的使用非常契合。

在本文中,我们将探讨如何在 GraphQL 中连接 MongoDB 数据库、定义模式和开发查询和突变的操作(CRUD)。我们将使用 Node.js 的 express-graphql 库。

环境搭建

在开始之前,我们需要确保电脑安装了 Node.js 和 MongoDB。如果你还没有,请先官网下载安装。同时,在开始前,我们需要确保使用 MongoDB shell 工具能够成功连接到 MongoDB 服务器。使用以下命令:

其中,{host} 是 MongoDB 服务器的主机名或 IP 地址,{port} 是 MongoDB 使用的端口号。如果连接成功,你将看到一个 MongoDB shell 终端。

接着,我们需要在本地创建一个新的 MongoDB 数据库。在终端中,使用以下命令:

命令 use 将切换到新的数据库,后面的参数 {your_new_db_name} 就是你准备创建的数据库名称。完成后,退出 MongoDB shell 终端。

接下来,在本地创建一个新的 Node.js 应用程序,并在终端中导航到该目录。在命令行中输入以下命令来初始化该应用程序:

这将创建一个新的 package.json 文件,其中包含我们的应用程序的所有信息。

接下来,我们使用以下命令安装 expressexpress-graphql

安装完成后,创建一个名为 app.js 的新文件。我们将在其中编写我们的示例代码。

定义 MongoDB 模式

要在 GraphQL 中使用 MongoDB,我们首先需要定义一个 MongoDB 模式。在项目文件夹中,创建一个名为 models 的新文件夹,然后在其中创建一个名为 User.js 的新文件。

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

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

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

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

在这里,我们使用了 Mongoose 模块和一个用户模式。我们使用 Mongoose Schema 类来定义字段、类型和默认值,然后将该模式导出到我们的应用程序。

连接 MongoDB 数据库

要在我们的应用程序中使用 MongoDB,我们需要在应用程序启动时建立 MongoDB 数据库的连接。在 app.js 中,我们将执行以下操作:

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

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

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

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

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

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

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

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

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

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

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

在这里,我们首先设置了 GraphQL 模式和查询操作。然后,我们将 User 模式导入应用程序,并使用以下代码将其与 GraphQL 一起使用:

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

这将建立与本地 MongoDB 数据库的连接以及与我们的 Express 应用程序的 GraphQL 接口。

测试 GraphQL API

完成上述步骤后,我们现在已经建立了一个使用 MongoDB 的 GraphQL API。我们可以使用任何支持 GraphQL 的客户端来测试它,例如 GraphiQL

在浏览器中,输入以下地址:

GraphiQL 将打开,并显示我们的 GraphQL 根查询和突变操作。接着,我们可以向其发送我们的查询和突变。

在这里,我们可以检索所有用户:

我们还可以创建新用户:

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

这将创建名为 Lucas 的新用户,并在完成后返回其详细信息,包括在数据库中创建的时间戳。我们还可以使用 updateUserdeleteUser 突变操作来更新和删除用户。

总结

以上就是如何在 GraphQL 中使用 MongoDB 的全部内容了。我们了解了如何定义 MongoDB 模式、连接到 MongoDB 数据库、开发 GraphQL 查询和突变操作,以及如何测试我们的 GraphQL API。希望这篇文章对于学习 GraphQL 和 MongoDB 很有帮助。

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

纠错
反馈