创建具有可索引字段签名的GraphQLObjectType?

创建具有可索引字段签名的GraphQLObjectType?,graphql,graphql-js,Graphql,Graphql Js,我目前正在将RESTAPI转换为GraphQL,但在其中一个端点中遇到了一些障碍 当前,该端点返回一个对象,该对象的键可以是一组无限的字符串,并且其值都匹配某个形状 所以,作为一个初步的例子,我有这种情况 // response { foo: { id: 'foo', count: 3 }, bar: { id: 'bar', count: 6 }, baz: { id: 'baz', count: 1 }, } 同样,键在运行时是未知的,可以是一组无限的字符串 例如,

我目前正在将RESTAPI转换为GraphQL,但在其中一个端点中遇到了一些障碍

当前,该端点返回一个对象,该对象的键可以是一组无限的字符串,并且其值都匹配某个形状

所以,作为一个初步的例子,我有这种情况

// response
{
    foo: { id: 'foo', count: 3 },
    bar: { id: 'bar', count: 6 },
    baz: { id: 'baz', count: 1 },
}
同样,键在运行时是未知的,可以是一组无限的字符串

例如,在TypeScript中,这种情况是通过使用可索引字段签名创建接口来处理的,如

interface Data {
    id: string;
    count: number;
}

interface Response {
    [key: string]: Data;
}
所以,我的问题是:graphql有可能实现这种功能吗?我将如何为此创建类型/模式


提前谢谢

我认为一种解决方案是使用
JSON.stringify()
方法

示例查询:{
类型:GraphQLString,
解析:(根、参数、上下文)=>{
设obj={
foo:{id:'foo',计数:3},
酒吧:{id:'bar',计数:6},
baz:{id:'baz',计数:1}
};
返回JSON.stringify(obj);
}
}
然后,在检索GraphQL查询的结果后,您可以使用
JSON.parse(result)
(如果执行查询的部分也是用JavaScript编写的,那么您必须使用其他语言的等效方法来解析传入的
JSON
响应)


这种解决方案的缺点是,您无法选择要从查询中检索的
obj
的哪些字段,但是,正如您所说,返回的对象可以有无限的字符串集,这些字符串在应用程序前端可能是未知的,因此无需选择其键,我说得对吗?

谢谢你的反馈。抱歉耽搁了!对于一个特定的路由,我最终使用了类似的方法,但也只是在类型的resolve方法中将类似的响应转换为数组。换句话说<代码>解析:myObj=>Object.keys(myObj.map)(key=>({key,value:myObj[key]}))