npm 包 graphql-extended 使用教程

阅读时长 5 分钟读完

什么是 graphql-extended?

GraphQL-extended 是一个为 GraphQL 提供了更加强大的功能和扩展能力的 npm 包。它可以为 GraphQL 查询提供更加灵活的处理方式,同时支持自定义的 schema、resolver 和中间件。

使用 graphql-extended

安装

graphql-extended 可以通过 npm 来进行安装:

基本用法

首先,我们需要定义一个 GraphQL 的 schema,来描述我们的数据结构和查询方式。接下来是一个简单的例子:

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

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

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

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

在上面的例子中,我们定义了一个查询,返回了一个单一的字符串 "Hello World!"。

接下来,我们使用 graphql-extended 来改进我们的查询方式:

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

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

在上面的代码中,我们使用了 graphqlHTTP 函数来将我们的 schema 和 root 传给 graphql-extended。我们将 graphiql 属性设置为 true,以便我们可以使用 GraphiQL UI 工具测试我们的查询。

我们还创建了一个新的 GraphQLExtension 实例,并将它传递给 extensions 数组。这将为我们的 GraphQL 查询提供更加详细的信息。

使用中间件

我们可以使用 graphql-extended 提供的中间件机制,来在查询到达 resolver 之前或之后,添加额外的处理逻辑。下面是一个中间件的示例:

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

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

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

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

在上述代码中,我们定义了一个 items 查询,该查询接受一个 ids 参数。我们使用两个中间件,分别在查询到达 resolver 之前和之后,对参数进行处理和处理结果。

缓存结果

我们经常需要对查询结果进行缓存,以避免重复的计算。graphql-extended 提供了一个可以在 resolver 中启用缓存的方法:

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

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

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

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

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

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

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

在上述代码中,我们定义了一个 NodeCache 实例来存储我们的查询结果。我们还定义了一个 resolver 函数,在其中检查缓存并存储结果。在 graphqlHTTP 函数中,我们将 fieldResolver 属性设置为我们的 resolver。

我们还创建了一个 GraphQLExtension 实例,并将它传递给 extensions 数组。我们启用了 cacheControl 选项,以允许 graphql-extended 自动控制查询的缓存策略。

结论

使用 graphql-extended,我们可以在 GraphQL 查询中添加更多的处理逻辑,并获得更加详细的信息。它为我们提供了方法来处理中间件、启用缓存和更灵活地定义 schema 和 resolver。希望这篇文章能帮助你更好地理解和使用 graphql-extended。

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

纠错
反馈