具有随机键名的 Graphql 对象
Posted
技术标签:
【中文标题】具有随机键名的 Graphql 对象【英文标题】:Graphql object with random key names 【发布时间】:2019-09-28 07:24:36 【问题描述】:数据库查询的输出:
"_id": "5cd532a8452d22435be6a9ac",
"properties":
"somerandomname": "asd,
"someotherrandomname": "adsad"
如何构建这个的 graphql 类型?
类似:
export const aaa = new GraphQLObjectType(
name: 'aaa',
fields: () => (
_id:
type: GraphQLString
,
properties:
type: GraphQLObjectType
,
)
);
但 GraphQLObjectType 需要配置。
有什么想法吗?
【问题讨论】:
GraphQL Blackbox / "Any" type?的可能重复 【参考方案1】:为了实现这一点,您必须定义一个返回 json
的自定义 GraphQLScalarType
。您可以在custom-scalars 阅读更多相关信息。
或者你可以只使用包graphql-type-json,它基本上是一个返回json的GraphQLScalarType
的实现,类似于:
const GraphQLJSON = require('graphql-type-json');
const aaa = new GraphQLObjectType(
name: 'aaa',
fields: () => (
_id:
type: GraphQLString
,
properties:
type: GraphQLJSON
,
)
);
const RootQuery = new GraphQLObjectType(
name: 'RootQueryType',
fields:
myField:
type: aaa,
resolve(parent, args)
// Here: return your object as it is
// for example:
return
_id: "this",
properties:
somerandomname: "asd",
someotherrandomname: "asdad",
"what?!": "it also has strings",
noway: [
"what about them arrays"
]
;
,
)
那么如果你查询:
myField
_id
properties
你会得到输出:
"data":
"myField":
"_id": "this",
"properties":
"somerandomname": "asd",
"someotherrandomname": "asdad",
"what?!": "it also has strings",
"noway": [
"what about them arrays"
]
【讨论】:
我不明白。你能举个例子吗? @Joe,我更新了一个使用包graphql-type-json
的示例
谢谢。但我事先不知道房产名称?它总是字符串。属性:“somestring”:“anotherstring”
您不必这样做,您只需返回从解析器上的数据库获得的任何内容。以上是关于具有随机键名的 Graphql 对象的主要内容,如果未能解决你的问题,请参考以下文章