如何在 Graphql 中返回 JSON 对象并定义 JSON 类型
Posted
技术标签:
【中文标题】如何在 Graphql 中返回 JSON 对象并定义 JSON 类型【英文标题】:How can I return a JSON object in Graphql and define JSON type 【发布时间】:2019-12-15 10:09:41 【问题描述】:我想在 graphiql 界面的 metas 字段中将我的结果作为 JSON OBJECT 返回,如果无法定义 JSON OBJECT,我如何为 JSON OBJECT 定义自定义标量。
我已经尝试将 graphql-type-json 中的 GraphQLJSON 作为 npm 包,但是当我使用它时,它会抛出一条错误消息,指出字段类型必须是输出类型
const PostType = new GraphQLObjectType(
name : "Post",
fields : () => (
id : type: GraphQLInt ,
title : type: GraphQLString ,
slug : type: GraphQLString ,
content : type: GraphQLString ,
type : type: GraphQLString ,
template : type: GraphQLString ,
link : type: GraphQLString ,
doctor_id : type: GraphQLInt ,
categories : type: GraphQLString ,
publishdate: type: GraphQLDate,
metas: type: GraphQLJSON
)
)
const mutation = new GraphQLObjectType(
name: 'Mutation',
fields:
/********* Post */
createPost:
type: schemaObjects.PostType,
args:
title: type: GraphQLString ,
slug: type: GraphQLString ,
content: type: GraphQLString ,
type: type: GraphQLString ,
status: type: GraphQLString ,
template: type: GraphQLString ,
categories: type: GraphQLString ,
doctor_id: type: GraphQLInt ,
link: type: GraphQLString ,
publishdate: type: GraphQLDate,
metas: type:GraphQLJSON
,
resolve(parentValue, args)
let post = PostController.create(args);
return post;
,
【问题讨论】:
你是如何导入GraphQLJSON
的?
感谢丹尼尔与我们联系。我正在使用 const GraphQLJSON = require('graphql-type-json');但我已经尝试使用 import GraphQLJSON from 'graphql-type-json' ,但效果不佳。
试试const GraphQLJSON = require('graphql-type-json')
@DanielRearden 非常感谢!这对我有用。
【参考方案1】:
graphql-type-json
模块导出一个对象,其中包含库添加的两种类型。假设您使用的是普通的旧 Node.js,您可以像这样导入类型:
const GraphQLJSON = require('graphql-type-json').GraphQLJSON
或使用解构语法:
const GraphQLJSON = require('graphql-type-json')
【讨论】:
谢谢!帮了我很多。很高兴在这个社区中看到像您这样的人。以上是关于如何在 Graphql 中返回 JSON 对象并定义 JSON 类型的主要内容,如果未能解决你的问题,请参考以下文章
GraphQL 查询从 JSON 数据源返回 GraphiQL 和 App 中的空对象
编写一个类是从 graphql API 响应返回的 JSON 对象创建变量集合的好方法吗?