npm 包 @sherbst/mongoose-to-graphql 使用教程

阅读时长 9 分钟读完

简介

@sherbst/mongoose-to-graphql 是一个开源的 npm 包,用于快速将 MongoDB 数据库中的数据转换为 GraphQL 数据类型。

GraphQL 是一个由 Facebook 开发的数据查询和操作语言,可用于构建高效的 API。而 MongoDB 是具有高可扩展性和灵活性的 NoSQL 数据库。

@sherbst/mongoose-to-graphql 可以让前端开发人员更加便捷地使用 GraphQL 和 MongoDB。

本文将讲解如何使用 @sherbst/mongoose-to-graphql 包来转换 MongoDB 数据为 GraphQL 数据。

安装和设置

首先,通过 npm 安装 @sherbst/mongoose-to-graphql 包:

在项目中引入该包:

转换过程

假设你已有一个 MongoDB 数据库,其中存储着用户信息的集合名为 user,其中的文档如下:

接下来,创建一个名为 User 的 Mongoose 模型,用于与 MongoDB 中的 user 集合进行交互:

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

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

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

然后,通过 @sherbst/mongoose-to-graphql 中的方法 createGraphQLType 将 Mongoose 模型转换为 GraphQL 类型:

在转换过程中,我们通过传入 name、model 和 exclude 三个参数来指定创建的 GraphQL 类型名称、MongoDB 模型以及要排除的属性。

最后,我们可以将 User 的查询和操作方法与转换后的 GraphQL 类型进行关联,以便在 GraphQL 查询中使用它们:

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

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

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

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

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

这里我们创建了一个名为 User 的 GraphQL 类型,包含 _id、username、email 三个字段。

然后,我们创建了两个操作方法:userQuery 和 userMutation。在 userQuery 中,我们查找了所有的 User 数据;在 userMutation 中,我们定义了一个添加 User 的方法。

最后,我们将 userQuery 和 userMutation 加入 GraphQL schema 中。

运行示例

为了更好地理解 @sherbst/mongoose-to-graphql 的使用方法,这里提供一份完整的示例代码。

首先,建立 MongoDB 连接:

然后,创建一个名为 UserModel 的模型,用于与 MongoDB 中的 user 集合进行交互:

接下来,创建一个名为 userGraphQLType 的 GraphQL 类型,用于表示从 MongoDB 中查询到的 User 数据,并排除了 password 字段:

然后,创建一个 getAllUsers 的操作方法,用于在 GraphQL 中查询所有的 User 数据:

最后,创建一个 addUser 的操作方法,用于在 GraphQL 中添加新的 User 数据:

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

将 userQuery 和 userMutation 加入到 GraphQL schema 中:

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

最后,监听本地端口并启动服务:

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

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

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

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

现在,启动项目并在浏览器中访问 http://localhost:3000/graphql ,就可以进行 GraphQL 的查询和操作了。

总结

通过 @sherbst/mongoose-to-graphql 包,前端开发人员可以在使用 MongoDB 数据库的情况下更加方便地使用 GraphQL,提升开发效率。

总的来说,使用该包的步骤如下:

  1. 建立 MongoDB 连接。
  2. 创建 Mongoose 模型。
  3. 调用 createGraphQLType 方法生成 GraphQL 类型。
  4. 将操作方法与生成的 GraphQL 类型关联,添加到 schema 中。
  5. 启动 GraphQL 服务后进行查询和操作。

在实际的开发中,我们还可以根据不同的需求调整 @sherbst/mongoose-to-graphql 的选项,定制适合自身工程项目的 GraphQL Schema。

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

纠错
反馈