如何使用 GraphQL 连接 MongoDB 数据库?

阅读时长 6 分钟读完

GraphQL 是一种新兴的 API 技术,它能够让开发者高效地构建数据同步 API。MongoDB 是一种流行的 NoSQL 数据库,它以 JSON 文档的形式存储数据。本文将介绍如何在前端使用 GraphQL 连接 MongoDB 数据库。

准备工作

在开始使用 GraphQL 连接 MongoDB 数据库之前,需要进行一些准备工作。

安装依赖

在开始使用 GraphQL 连接 MongoDB 数据库之前,需要先安装一些依赖。

安装 MongoDB 驱动程序:

安装 graphql:

数据库设置

使用 MongoDB 连接前,需要进行一些数据库设置。在 MongoDB 中,需要创建一个数据库和一个集合。

首先,在 MongoDB 中创建一个名为 notes 的数据库:

然后,创建一个名为 notes 的集合(如果这个集合不存在):

GraphQL schema

GraphQL schema 描述了数据模型和数据类型。以下是一个简单的 GraphQL schema,用于描述 note 数据模型:

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

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

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

在这个 schema 中,Note 是一个数据模型,包含 _idtitlecontent 字段。Query 包含 notesnote 字段,分别用于查询所有的 note 和一个指定 id 的 note。Mutation 包含 addNoteupdateNotedeleteNote 字段,分别用于添加、更新和删除 note。

GraphQL resolvers

GraphQL resolvers 是处理 GraphQL 查询、变更和 Subscription 的函数。以下是 GraphQL resolvers 的示例代码:

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

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

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

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

在这个例子中,getQuery() 函数用于连接到 notes 集合。这个例子包含三个 resolver:

  • notes resolver 在 notes 集合中查找所有的 note。
  • note resolver 根据传入的 id 在 notes 集合中查找一个 note。
  • addNote resolver 在 notes 集合中添加一个新的 note,然后返回该 note。
  • updateNote resolver 根据传入的 id 更新 notes 集合中的一个 note,并返回该 note。
  • deleteNote resolver 根据传入的 id 删除 notes 集合中的一个 note,并返回该 note。

GraphQL server

最后一步是创建 GraphQL server,将上面的 schema 和 resolvers 组合在一起。以下是示例代码:

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

-- ------

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

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

在这个例子中,我们使用 typeDefsresolvers 创建了一个新的 ApolloServerserver.applyMiddleware() 方法将 GraphQL server 注册到 Express 应用程序中。

结论

本文介绍了如何在前端使用 GraphQL 连接 MongoDB 数据库。我们介绍了如何创建一个简单的 GraphQL schema 和 resolver,并将它们组合成一个 GraphQL server。希望这篇文章对你有所帮助。

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

纠错
反馈