Relay中的自引用连接?

时间:2016-07-01 04:12:23

标签: relayjs

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

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

我是否会更好地将这些数据放在" flattened"方式,只是放弃自我连接的想法?思绪,有人吗?

1 个答案:

答案 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],
});