使用 GraphQL 和 MongoDB 构建完整的应用程序

阅读时长 8 分钟读完

在现代 Web 开发中,数据一直是一个核心问题。开发者们需要使用各种工具和技术来存储、查询和处理数据。GraphQL 和 MongoDB 都是当前非常流行的技术,它们可以共同构建一个完整的应用程序。

GraphQL 简介

GraphQL 是一种查询语言,可以让客户端精确地调用所需数据,并且可以在不改变 API 结构的情况下进行修改。相比传统的 RESTful API,它提供了更好的灵活性和可维护性。GraphQL 还有一个特性是类型系统,它可以让客户端和服务器之间进行类型检查以及智能化的自动完成。

MongoDB 简介

MongoDB 是一种非关系型数据库,它使用 BSON(二进制 JSON)格式来存储数据。与传统的关系型数据库不同,MongoDB 采用文档形式来存储数据。这意味着,我们可以将复杂的数据结构存储为一个文档,而不是拆分为多个表。

构建一个完整的应用程序

下面我们来一步步构建一个完整的应用程序,使用 GraphQL 和 MongoDB。

步骤 1:搭建 GraphQL 服务器

首先,我们需要创建一个 GraphQL 服务器,为客户端提供 API。

我们可以使用 Node.js 来创建一个 GraphQL 服务器。首先,安装以下依赖:

然后,我们来编写代码:

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

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

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

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

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

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

这个服务器只有一个查询,用于返回字符串 "Hello world!"。

尝试在浏览器中访问 http://localhost:4000/graphql,你会看到 GraphQL IDE,可以在左侧查询窗口中输入以下查询:

点击运行按钮,你会看到服务器返回了一个字符串 "Hello world!"。

步骤 2:连接 MongoDB 数据库

接下来,我们需要连接 MongoDB 数据库。我们可以使用 MongoDB 官方提供的 Node.js 驱动程序来连接数据库。

首先,安装 MongoDB 驱动程序:

然后,我们来编写代码:

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

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

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

我们在本地创建了一个名为 "myproject" 的数据库,并连接上了 MongoDB 服务器。

步骤 3:创建 GraphQL 查询

现在我们已经可以访问 GraphQL API 和 MongoDB 数据库了。我们需要创建一些查询来获取数据。

假设我们正在开发一个博客平台,需要创建以下查询:

  • 获取所有文章
  • 根据 ID 获取单个文章
  • 获取文章的评论

我们可以使用 GraphQL schema 来定义这些查询:

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

这个 schema 定义了三个类型,Article、Comment 和 Query。Article 和 Comment 分别表示文章和评论数据,Query 则定义了三个查询,用于获取这些数据。

我们需要实现这些查询,可以在上述代码中添加 resolvers:

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

步骤 4:使用 GraphQL 查询数据

最后,我们需要使用前面定义的查询来获取数据。

假设我们已经将一些文章和评论存储到了 MongoDB 数据库中。我们可以在 GraphQL IDE 中使用以下查询来获取这些数据:

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

使用这些查询,我们可以获取所有文章、单个文章的详细信息以及一篇文章的评论。

总结

GraphQL 和 MongoDB 都是非常流行的技术,它们可以共同构建一个完整的应用程序。在本文中,我们学习了如何使用这两个技术来构建一个简单的博客平台,包括创建 GraphQL 服务器、连接 MongoDB 数据库以及定义和实现 GraphQL 查询。这个例子只是一个入门级别的案例,实际上,在实际项目中,我们需要更多的工具和技术来处理数据。

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

纠错
反馈