什么是 @graphql-tools/json-file-loader?
@graphql-tools/json-file-loader 是一个用于使用 GraphQL 工具链加载 JSON 文件的 npm 包。它提供了一种不同于编写自定义解析逻辑来解析文件的方法,而是基于 GraphQL 工具链自带的解析器和 Schema 来解析 JSON 文件。
安装
通过 npm 安装:
npm install @graphql-tools/json-file-loader
用法
基本用法
以下是一个简单的示例,使用该包加载一个包含 Person 类型定义的 JSON 文件:
-- -------------------- ---- ------- ------ - -------------- - ---- --------------------- ------ - ----------------- - ---- ------------------------------------ ------ - -------------- - ---- --------------------------------- ----- ------ - -------------------------------- - -------- - --- -------------------- --- ---------------- - --
在上面的示例中,我们使用 loadSchemaSync
函数从文件中加载了 GraphQL Schema。我们在 loaders
参数中传入了 GraphQLFileLoader
和 JsonFileLoader
实例,因此该函数将使用 JsonFileLoader
加载任何 JSON 文件。
指定文件路径
如果我们的 JSON 文件不是存储在与 Schema 文件相同的目录中,我们可以通过使用绝对和相对路径来指定它。以下是一个示例,其中我们将路径传递给 loadSchemaSync
函数,以指定存储 Person 类型定义的 JSON 文件的位置:
const schema = loadSchemaSync('schema.graphql', { loaders: [ new GraphQLFileLoader(), new JsonFileLoader() ], documents: ['./path/to/Person.json'] })
在上面的示例中,我们通过 documents
参数来指定要加载的文档。它应该是一个数组,其中的每个元素都是包含要加载的文件的路径。
对 JSON 文件进行合并
默认情况下,@graphql-tools/json-file-loader 将简单地将每个 JSON 文件转换为 GraphQL 类型,并将它们合并到单个 Schema 中。如果文件中存在具有相同名称的类型,则 @graphql-tools/json-file-loader 将在加载之前为其生成错误。
以下是一个示例,其中我们加载两个包含 Person 类型定义的 JSON 文件:
const schema = loadSchemaSync('schema.graphql', { loaders: [ new GraphQLFileLoader(), new JsonFileLoader() ], documents: ['./path/to/Person1.json', './path/to/Person2.json'] })
在上面的示例中,我们将两个 JSON 文件作为参数传递给 loadSchemaSync
函数。@graphql-tools/json-file-loader 将这两个文件中的 Person 类型定义合并到相同的 Schema 中。
自定义字段名
默认情况下,@graphql-tools/json-file-loader 将 JSON 文件中的每个属性都转换为 GraphQL 类型。如果我们只想加载一部分属性,或者希望将属性重命名为不同的字段名,那么可以使用 fields
参数来指定自定义字段名。
以下是一个示例,其中我们只加载 JSON 文件中的 name
和 age
属性,并将它们重命名为 fullName
和 personAge
:
-- -------------------- ---- ------- ----- ------ - -------------------------------- - -------- - --- -------------------- --- ---------------- -- ---------- -------------------------- ---------------------- - ------- - ----- ----------- ---- ----------- - - --
在上面的示例中,我们使用了 jsonFileLoaderOptions
参数,并在其中指定了 fields
。它是一个对象,其中的每个 key 都是要加载的属性名称,value 是要为该属性设置的新字段名。
结论
随着 GraphQL GraphQL 工具链的普及,我们越来越多地需要将非 GraphQL 数据源集成到我们的应用程序中。@graphql-tools/json-file-loader 是一个非常有用的工具,可以帮助我们来轻松地加载 JSON 文件,并将它们与 GraphQL Schema 集成到一起。通过简单的配置,我们可以定制如何加载这些文件以及如何将它们与我们的 Schema 结合,从而为我们带来更加高效的开发体验。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5eedaf0eb5cbfe1ea0610f83