如何在 GraphQL 中使用 MongoDB 作为数据源?

阅读时长 7 分钟读完

GraphQL 是一种新兴的数据查询语言,它可以帮助前端开发者更好地管理数据。而 MongoDB 是一种流行的 NoSQL 数据库,它具有高可扩展性、灵活性和性能优势。在本文中,我们将学习如何在 GraphQL 中使用 MongoDB 作为数据源。

为什么选择 MongoDB 作为 GraphQL 数据源?

在选择 GraphQL 数据源时,有很多不同的选择。为什么我们要选择 MongoDB 作为 GraphQL 数据源呢?

首先,MongoDB 是一种文档型数据库,它的数据结构非常灵活。这意味着可以轻松地存储和查询不同类型的数据,而不需要进行任何预定义的架构。这使得 MongoDB 成为一个非常适合 GraphQL 的数据源。

其次,MongoDB 具有高可扩展性。如果您的应用程序需要处理大量数据或需要处理高并发请求,那么 MongoDB 可以轻松地扩展以满足这些需求。

最后,MongoDB 具有出色的性能。它使用了内存映射文件系统,这意味着它可以非常快地读取数据。此外,MongoDB 还支持嵌套文档和数组,这使得查询非常快速和高效。

在 GraphQL 中使用 MongoDB

接下来,我们将学习如何在 GraphQL 中使用 MongoDB。我们将使用 Node.js 和 Express 框架来构建我们的 GraphQL API。

安装依赖

在开始之前,我们需要安装一些依赖项。首先,我们需要安装 expressexpress-graphql 模块,以及 graphqlmongodb 模块。您可以使用以下命令进行安装:

连接到 MongoDB

在我们开始编写 GraphQL API 之前,我们需要连接到 MongoDB 数据库。我们可以使用 mongodb 模块来连接到 MongoDB,如下所示:

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

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

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

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

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

在上面的代码中,我们使用 MongoClient 类来连接到 MongoDB。我们将连接字符串指定为 mongodb://localhost:27017,这是 MongoDB 的默认端口。我们还指定了数据库名称为 mydb

定义 GraphQL schema

接下来,我们需要定义 GraphQL schema。我们的 schema 将定义我们的数据类型以及我们将支持的查询和突变。我们将创建一个名为 schema.js 的文件,并将以下代码添加到其中:

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

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

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

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

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

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

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

在上面的代码中,我们首先定义了一个名为 userType 的 GraphQLObjectType,它定义了我们的用户数据类型。我们定义了三个字段:_idnameemail

接下来,我们定义了一个名为 queryType 的 GraphQLObjectType,它定义了我们将支持的查询。我们定义了一个名为 users 的查询,它将返回一个用户列表。我们使用 asyncawait 关键字来异步地连接到数据库,并使用 find() 方法获取 users 集合中的所有文档。

最后,我们将 queryType 添加到 GraphQLSchema 中,并导出它。

创建 GraphQL API

最后,我们需要使用 express-graphql 模块创建我们的 GraphQL API。我们将创建一个名为 server.js 的文件,并将以下代码添加到其中:

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

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

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

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

在上面的代码中,我们首先导入 expressexpress-graphql 模块,以及我们上面定义的 schema。我们创建一个名为 app 的 Express 应用程序,并将 /graphql 路由映射到 graphqlHTTP 中间件。

我们将 schema 传递给 graphqlHTTP 中间件,并将 graphiql 选项设置为 true,以便我们可以使用 GraphiQL 工具来测试我们的 API。

最后,我们启动我们的应用程序并将其监听在端口 3000 上。

在 GraphiQL 中测试 API

现在我们已经完成了我们的 GraphQL API 的编写,我们可以使用 GraphiQL 工具来测试它。在浏览器中打开 http://localhost:3000/graphql,您将看到 GraphiQL 工具的界面。

在左侧窗格中,您可以输入您的查询。例如,您可以输入以下查询:

这将返回 users 集合中的所有用户,包括 _idnameemail 字段。

结论

在本文中,我们学习了如何在 GraphQL 中使用 MongoDB 作为数据源。我们首先探讨了为什么选择 MongoDB 作为 GraphQL 数据源,然后介绍了如何使用 Node.js 和 Express 框架来构建我们的 GraphQL API。

我们定义了 GraphQL schema,并使用 express-graphql 模块创建了我们的 API。最后,我们使用 GraphiQL 工具来测试我们的 API,并成功地从 MongoDB 中检索了数据。

希望本文能够帮助您了解如何在 GraphQL 中使用 MongoDB 作为数据源,并为您构建 GraphQL API 提供指导。

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

纠错
反馈