这不起作用,因为类型在路径字段定义中引用其自身:
var routeType = new GraphQLObjectType({
name: 'MessageRoute',
fields: {
name: {
type: GraphQLString
},
routes: {
type: new GraphQLList(routeType),
resolve: (route) => {
return route.routes;
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
那怎么办呢?
Lee*_*ron 15
GraphQL类型可以通过定义fields为返回对象而不是对象的函数来引用自身(或引用稍后在文件中定义的另一种类型).完全解析页面后将调用该函数.
对于你的例子:
var routeType = new GraphQLObjectType({
name: 'MessageRoute',
fields: function () {
return {
name: {
type: GraphQLString
},
routes: {
type: new GraphQLList(routeType),
resolve: (route) => {
return route.routes;
}
}
};
}
});
Run Code Online (Sandbox Code Playgroud)
或者,如果您正在使用ES6,那么使用箭头函数可以很好地简化:
var routeType = new GraphQLObjectType({
name: 'MessageRoute',
fields: () => ({
name: {
type: GraphQLString
},
routes: {
type: new GraphQLList(routeType),
resolve: (route) => {
return route.routes;
}
}
})
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2542 次 |
| 最近记录: |