中继中的自引用连接?

Self-referencing connections in Relay?

使用 Relay,我可以创建到 GraphQL 类型的连接,然后使用该连接定义其他类型的字段。

但是,是否可以创建一个连接,并在同一类型中使用它?我的基础数据源是带有自引用键的 SQL table。当表示为图形时,数据中没有循环。我可以通过创建 "self" 连接直接在 GraphQL 中对这种关系建模吗,或者这是错误的方法吗?如果不在我的代码中创建循环模块依赖项,我无法找到执行此操作的方法。

如果我以 "flattened" 的方式考虑这些数据,而放弃自连接的想法,我会更好吗?有想法吗?

我能够使用如下代码创建自引用连接(使用 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],
});