npm 包 feathers-mongoose-relay 使用教程

阅读时长 9 分钟读完

简介

Feathers-mongoose-relay 是一个为了简化开发者使用 Node.js 平台下基于 FeathersJS 框架和 Mongoose 对 MongoDB 进行数据管理或 API 开发过程中 MongoDB 查询器开发效率而生的 npm 包。Feathersjs 是一个用于构建实时应用程序的现代 Web 应用框架,它基于一个可扩展的服务和插件体系结构。而 Mongoose 则是一个 NodeJS 下对 MongoDB 官方驱动进行了优美封装,提供了 Schema 机制和 Model - Collection 映射功能的对象模型工具库。

如果您正在使用 Feathersjs 和 Mongoose 进行开发或学习,那么 feathers-mongoose-relay 将为您的开发提供高效、易用、优美的解决方案。本文将为您详细介绍如何使用 feathers-mongoose-relay 进行开发工作。

安装

首先,您需要在项目的根目录下进行安装:

基本使用

在这一部分中,我们将为您介绍如何在项目中进行简单的使用。

你需要先在 app.js 中引入 FeathersJS 和 Mongoose:

您需要在 FeathersJS 中注册 Mongoose:

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

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

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

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

接下来,您需要创建一个适配器用于 feathers-mongoose-relay。适配器接受一个 Mongoose 模型,将它的数据结构解析为通用的GraphQL规则,并将它们直接映射到GraphQL中的定义。我们将创建一个电子邮件模型(Email),如下所示:

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

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

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

为 Email 模型创建适配器:

现在,我们可以在 FeathersJS 服务上注册该适配器:

注册 GraphQL 模块,并查询邮件数据:

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

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

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

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

对于传统的 FeathersJS 用户,这种数据访问方式非常简单,现在您可以自由地使用 GraphQL 进行数据查询,也可以利用 FeathersJS 的服务实现对数据的增加、删除和修改等。

高级使用(万能的 resolvers)

在前面的章节中,我们使用 rootReducer 作为 GraphQL 的根解析器,其包含了“email”字段的解析器。该解析器直接通过 Service 进行 CRUD 请求,并将结果返回给 GraphQL 客户端。

然而,以这种方式进行操作存在一定的缺点。例如,云计算平台企图同时查询多个服务并合并结果时,将会遇到困难。同样,您可以鼓励客户端使用 Relay to 提高 React Native 应用程序的性能。

在 GraphQL 规范中,我们可以使用 Schema、Resolvers 和 Connector,为数据源提供一个完整的 GraphQL 抽象。我们将使用 Resolvers,它的作用是将外部数据源映射到 GraphQL 定义上。

这样,我们可以使用解析器作为 Resolvers 的实现器,它不仅可包括 Service 的 CRUD 操作,而且还提供了其他数据源,如社交媒体和第三方服务。

首先,需要安装 graphql-tools:

建立 schema 和 Resolver:

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


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

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

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

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

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

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

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

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

GraphQL 的根解析器即为 pagination:

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

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

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

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

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

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

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

FeathersJS 服务则需要将结果转化为 GraphQL Edge:

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

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

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

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

现在,我们可以使用 feathers-mongoose-relay 的框架,在需要时添加 Resolvers,请务必进行深入学习以便完全理解。

小结

本文通过对 FeathersJS 和 Mongoose 的广泛调研,提出了使用 Node.js 平台进行数据管理或 API 开发的单一解决方案。通过对 feathers-mongoose-relay 的介绍,简化了服务和客户端之间的通信,从而实现了良好的开发效率、性能和响应速度。

希望本文可以为您提供有帮助的信息,从而在向您的数据 API 进程中更快、更简单地动手。

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

纠错
反馈