在 Express.js 中使用 GraphQL 和 MongoDB:一份完整的教程

阅读时长 8 分钟读完

前言

在现代 Web 应用程序中,前端技术的发展非常迅速。为了满足不断增长的需求,我们需要使用更加高效和灵活的技术来构建应用程序。GraphQL 是一种新兴的查询语言,可以使我们更加高效地构建 API。MongoDB 是一种流行的 NoSQL 数据库,可以存储非结构化数据。在本篇文章中,我们将介绍如何在 Express.js 中使用 GraphQL 和 MongoDB 构建一个完整的应用程序。

环境搭建

安装 Node.js

在开始之前,我们需要安装 Node.js。你可以在官方网站(https://nodejs.org/)下载安装程序并按照指示进行安装。

创建 Express.js 应用程序

在我们开始之前,我们需要创建一个新的 Express.js 应用程序。你可以使用以下命令在命令行中创建一个新的 Express.js 应用程序:

这会创建一个名为 myapp 的新 Express.js 应用程序,并安装所需的依赖项。

安装 GraphQL 和 MongoDB

在我们可以开始构建我们的应用程序之前,我们需要安装所需的 GraphQL 和 MongoDB 模块。你可以使用以下命令在命令行中安装这些模块:

这会安装 graphqlexpress-graphqlmongoose 模块,我们将在接下来的步骤中使用它们。

构建 GraphQL API

现在我们已经安装了所需的模块,我们可以开始构建我们的 GraphQL API。

创建模型

在我们可以创建 GraphQL API 之前,我们需要创建一个 MongoDB 模型。在我们的示例中,我们将创建一个名为 Book 的模型,其中包含书籍的标题、作者和出版日期。

我们可以使用以下代码创建我们的模型:

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

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

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

创建 GraphQL Schema

现在我们已经创建了我们的 MongoDB 模型,我们可以开始创建我们的 GraphQL Schema。GraphQL Schema 定义了我们可以查询和变更的数据结构。

在我们的示例中,我们将创建一个名为 BookType 的类型,并定义我们可以查询的字段。我们还将创建一个名为 RootQuery 的根查询,它允许我们查询我们的书籍数据。

我们可以使用以下代码创建我们的 GraphQL Schema:

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

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

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

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

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

创建 GraphQL API

现在我们已经创建了我们的 GraphQL Schema,我们可以开始创建我们的 GraphQL API。我们将使用 express-graphql 模块来创建我们的 API。

我们可以使用以下代码创建我们的 GraphQL API:

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

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

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

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

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

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

我们首先使用 express 模块创建一个新的 Express.js 应用程序。我们然后使用 mongoose 模块连接到我们的 MongoDB 数据库。最后,我们使用 express-graphql 模块创建我们的 GraphQL API,并将其挂载到 /graphql 路径上。

查询数据

现在我们已经创建了我们的 GraphQL API,我们可以开始查询我们的数据。我们可以使用 GraphQL 的查询语言来查询我们的数据。

查询单个书籍

我们可以使用以下查询语句查询单个书籍:

这会查询具有 ID 为 5f3b43a3d3f3a51d1c2a2316 的书籍,并返回标题、作者和出版日期。

查询所有书籍

我们可以使用以下查询语句查询所有书籍:

这会查询所有书籍,并返回标题、作者和出版日期。

变更数据

除了查询数据之外,我们还可以使用 GraphQL 的变更语言来变更我们的数据。

创建新书籍

我们可以使用以下变更语句创建新的书籍:

这会创建一个新的书籍,并返回标题、作者和出版日期。

更新书籍

我们可以使用以下变更语句更新现有的书籍:

这会更新具有 ID 为 5f3b43a3d3f3a51d1c2a2316 的书籍,并返回更新后的标题、作者和出版日期。

删除书籍

我们可以使用以下变更语句删除现有的书籍:

这会删除具有 ID 为 5f3b43a3d3f3a51d1c2a2316 的书籍,并返回被删除的书籍的标题、作者和出版日期。

结论

在本篇文章中,我们介绍了如何在 Express.js 中使用 GraphQL 和 MongoDB 构建一个完整的应用程序。我们首先创建了一个 MongoDB 模型,然后创建了一个 GraphQL Schema,并使用 express-graphql 模块创建了我们的 GraphQL API。最后,我们演示了如何查询和变更我们的数据。

这个应用程序只是一个起点,你可以根据你的需求进行扩展。GraphQL 和 MongoDB 可以让你更加高效地构建 Web 应用程序,因此这是一个非常有用的技术组合。

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

纠错
反馈