我正在尝试使用graphQl创建动态的GraphQLObjectType,如下所示:
export const Project = (data) => {
return new GraphQLObjectType({
name: 'Project',
fields: () => ({
id: {
type: GraphQLString
},
type: {
type: GraphQLString
},
author: {
type: User,
resolve: (root, args, req) => {
...
}
}
})
})
};
我以这种方式在查询中调用此模型:
getProjectById: {
type: Project(structure),
args: {
id: { type: GraphQLString }
},
resolve(source, args, req) {
const projectService = new ProjectService(req);
return projectService.getProjectById(args.id)
}
}
问题是这样做时我收到此错误:
模式必须包含唯一的命名类型,但是包含多个类型 名为“项目”
错误在哪里?你有什么建议吗?非常感谢
答案 0 :(得分:1)
呼叫Project(structure)
依次呼叫new GraphQLObjectType({name: 'Project',...})
。如果多次调用Project(structure)
,则尝试声明具有相同名称的多个GraphQLObjectType(没有任何意义)。
如果要动态创建/声明GraphQLObjectType
,则必须生成唯一的name属性。例如。像这样:
// assuming data.name is unique
export const Project = (data) => {
return new GraphQLObjectType({
name: `Project${data.name}`,
...
})
}