循环 GraphQL 模式不工作
Cyclic GraphQL Schema Not Working
我有这样的:
//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)
}
})
});
我收到错误:
Error: Schema must contain unique named types but contains multiple
types named "Driver".
我发现一些帖子说将字段包装在功能块中可以解决问题,但如您所见,我这样做了,但并没有什么不同。
Thin 类型的循环引用应该被支持,是吗?我们可以让客户指定想要的深度。
我做错了什么?
作为解决方法,我可以从 DriverType 中删除 homeTerminal
并使用原始字段将其展平,但这相当不雅。
我发现了问题。在 terminalType.js
我有:
import DriverType from './DriverType';
应该是:
import DriverType from './driverType';
小写 "d" 正确。
更新
这是我认为正在发生的事情。 Nodejs 缓存导入。因此多次导入同一个文件总是 returns 同一个实例。但是,我相信,虽然 import
是 而不是 区分大小写的缓存 是 。因此,在文件名上使用不同的大小写 returns 一个新的不同实例。
我有这样的:
//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)
}
})
});
我收到错误:
Error: Schema must contain unique named types but contains multiple types named "Driver".
我发现一些帖子说将字段包装在功能块中可以解决问题,但如您所见,我这样做了,但并没有什么不同。
Thin 类型的循环引用应该被支持,是吗?我们可以让客户指定想要的深度。
我做错了什么?
作为解决方法,我可以从 DriverType 中删除 homeTerminal
并使用原始字段将其展平,但这相当不雅。
我发现了问题。在 terminalType.js
我有:
import DriverType from './DriverType';
应该是:
import DriverType from './driverType';
小写 "d" 正确。
更新
这是我认为正在发生的事情。 Nodejs 缓存导入。因此多次导入同一个文件总是 returns 同一个实例。但是,我相信,虽然 import
是 而不是 区分大小写的缓存 是 。因此,在文件名上使用不同的大小写 returns 一个新的不同实例。