介绍
在 GraphQL 中,使用 JSON 数据类型时,通常需要转换为字符串传输。然而,这会导致数据格式变得不可读,而且在客户端解析 JSON 数据时必须进行额外的反序列化步骤。为了解决这个问题,我们可以使用 npm 包 graphql-type-json
。
graphql-type-json
是一个用于将 JavaScript 对象序列化成 GraphQL 中的 JSON 字符串的 npm 包。它是一个自定义标量类型,允许我们在 GraphQL 模式中直接使用 JSON 格式的数据类型。
安装
要使用 graphql-type-json
,首先需要安装它:
npm install --save graphql-type-json
使用
引入
需要将 GraphQLJSON
导入到你的代码中:
import { GraphQLJSON } from 'graphql-type-json';
添加到 GraphQL Schema
我们需要将 GraphQLJSON
添加到 GraphQL schema 中:
-- -------------------- ---- ------- ------ - -------------------- - ---- ---------------- ----- -------- - - ------ ---- -- ----- --------- - - ----- ------------ -- ----- ------ - ---------------------- --------- ---------- ---
现在,我们已经将 GraphQLJSON
添加到我们的 schema 中,并将其命名为 JSON
。
使用
现在我们可以在 GraphQL 查询和 mutation 定义中使用自定义标量类型 JSON
。
例如,以下是一个查询,它返回一个包含 JSON 数据的对象:
{ myObject { id data } }
在 resolver 中,我们可以像处理任何其他类型一样处理 data
字段。
-- -------------------- ---- ------- - ------ - --------- ------ ----- -------- -- - ------ - --- ---- ----- - ---- ------ ---- --- -- -- -- -- -- -- --
示例代码
以下是一个完整的例子:
-- -------------------- ---- ------- ------ - -------------------- - ---- ---------------- ------ - ----------- - ---- -------------------- ----- -------- - - ------ ---- ---- -------- - --- --- ----- ----- - ---- ----- - --------- --------- - -- ----- --------- - - ----- ------------ ------ - --------- ------ ----- -------- -- - ------ - --- ---- ----- - ---- ------ ---- --- -- -- -- -- -- -- -- ----- ------ - ---------------------- --------- ---------- --- ------ ------- -------
结论
使用 npm 包 graphql-type-json
,我们可以直接在 GraphQL schema 中使用 JSON 数据类型,而无需对其进行额外的序列化或反序列化。这使得我们的数据模型更加清晰,并且可以减少客户端和服务器之间的数据传输量。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/42579