使用Relay,我可以创建与GraphQL类型的连接,然后使用该连接来定义其他类型的字段。
但是,是否可以创建连接,并在同一类型中使用它?我的基础数据源是带有自引用键的SQL表。当表示为图形时,数据中没有循环。我可以通过创建一个" self"来直接在GraphQL中建模这种关系。连接,或者这是错误的方法?我无法在我的代码中创建循环模块依赖项的情况下找到一种方法。
我是否会更好地将这些数据放在" flattened"方式,只是放弃自我连接的想法?思绪,有人吗?
答案 0 :(得分:1)
我能够使用以下代码创建自引用连接(使用graphql 0.6.0和graphql-relay 0.4.2:
import { GraphQLObjectType } from 'graphql';
import {
connectionArgs,
connectionDefinitions,
connectionFromArray,
globalIdField,
} from 'graphql-relay';
import { nodeInterface } from './nodeDefinitions';
import { getRelatedData } from './dataSource';
const dataType = new GraphQLObjectType({
name: 'Data',
fields: () => ({
id: globalIdField('Data'),
related: {
type: connectionDefinitions({
name: 'Data',
nodeType: dataType,
}).connectionType,
args: connectionArgs,
resolve: (parent, args) => connectionFromArray(
getRelatedData(parent.id),
args
),
},
}),
interfaces: () => [nodeInterface],
});