循环GraphQL架构不起作用

时间:2016-06-16 01:22:45

标签: javascript graphql graphql-js

我喜欢这个:

//driverType.js
module.exports = new GraphQLObjectType({
  name: 'Driver',
  fields: () => ({
    homeTerminal: {
      type: TerminalType,
      resolve: resolver(User.HomeTerminal)
    }
  })
});

和此:

//terminalType.js
module.exports = new GraphQLObjectType({
  name: 'Terminal',
  fields: () => ({
    drivers: {
      type: new GraphQLList(DriverType),
      resolve: resolver(Terminal.Drivers)
    }
  })
});

我收到错误:

  

错误:架构必须包含唯一的命名类型,但包含多个   名为" Driver"。

的类型

我发现一些帖子说在功能块中包装字段会解决它,但正如你所看到的那样,它并没有起到作用。

应该支持那种循环引用,是吗?我们可以让客户指定所需的深度。

我做错了什么?

作为一种解决方法,我可以从DriverType中删除homeTerminal并使用原始字段将其展平,但这样做相当不优雅。

1 个答案:

答案 0 :(得分:0)

我发现了问题。在terminalType.js我有:

import DriverType from './DriverType';

应该是:

import DriverType from './driverType';

小写" d"是对的。

<强>更新

这是我认为正在发生的事情。 Nodejs缓存导入。因此,多次导入同一文件始终返回相同的实例。但是,我相信,虽然import ,但区分大小写的缓存。因此,使用不同的文件名调用会返回一个新的不同实例。