Mongoose 中如何实现使用 GraphQL 进行查询和变更?

GraphQL 是一种 API 查询语言和运行时环境,用于查询 API 的数据。而 Mongoose 是一个在 Node.js 中操作 MongoDB 数据库的工具,通过编写 Schema 然后创建 Model,便可对 MongoDB 数据库进行增删改查操作。在本文中,我们将探讨如何在 Mongoose 中使用 GraphQL 进行查询和变更。

环境搭建

在使用 Mongoose 和 GraphQL 进行开发之前,你需要先搭建好开发环境。以下是搭建环境的步骤:

  1. 你需要先安装 Node.js,在 Node.js 官网 下载安装包并进行安装。

  2. 在项目文件夹下打开终端,执行以下命令来初始化项目:

    --- ----

    根据提示输入项目名称、版本号等信息来生成 package.json 文件。

  3. 安装依赖包:

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

    这里我们使用的是 mongoose 和 graphql,后面的 express 和 express-graphql 是搭建 GraphQL 服务器所需要的库。

创建 Schema

在使用 Mongoose 和 GraphQL 进行开发之前,我们需要先创建 Schema。Schema 定义了数据的结构和类型,与 GraphQL 中的 Schema 比较类似。

在项目文件夹下创建名为 models 的文件夹,在 models 文件夹下创建名为 user.js 的文件,代码如下:

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

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

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

这里我们定义了 User 的结构和类型,包括 nameemailage 三个字段。然后将 UserSchema 导出为一个 User 的 model。

创建 GraphQL Schema

app.js 或者 server.js 文件中创建 GraphQL Schema。Schema 是 GraphQL 中的重要概念,用于定义 GraphQL API 中的数据类型、字段、查询和变更等。

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

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

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

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

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

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

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

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

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

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

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

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

其中,buildSchema 方法用于创建 GraphQL Schema。在 Schema 中,我们定义了 User 类型、 Query 类型、 Mutation 类型。User 类型定义了 idnameemailage 四个字段, Query 类型定义了 users 字段和 user 字段, Mutation 类型定义了 createUserupdateUserdeleteUser 三个字段。

接着,在 root 变量中定义了各个字段的解析器函数。例如,在 users 字段的解析器函数中,我们使用 Mongoose 的 find 方法查询数据库中的所有用户,然后将查询结果返回。在 createUser 字段的解析器函数中,我们使用 Mongoose 的 create 方法创建一条新用户记录,并返回创建的用户信息。

最后,使用 graphqlHTTP 中间件将 GraphQL Schema 注册到 Express 中。

查询和变更

接下来,我们使用 GraphiQL 来测试 GraphQL API。GraphiQL 是一款 GraphQL 的 IDE 工具,可以进行 API 接口测试和调试。

在浏览器中输入 http://localhost:3000/graphql 开启 GraphiQL 工具。然后输入以下代码进行测试:

查询所有用户

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

根据 ID 查询用户

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

创建用户

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

更新用户

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

删除用户

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

以上查询和变更操作应该可以成功。

结论

GraphQL 是一个非常强大的 API 查询语言,通过结合 Mongoose,我们可以轻松地使用 GraphQL 来操作 MongoDB 数据库。在实际项目中,使用 GraphQL 可以提高 API 的效率和灵活性,同时减少开发工作量。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/670398ddd91dce0dc84bbc78