我认为问题在于,我的schema.js文件中的字段称为“id”以外的字段,因为该字段在数据库中称为其他字段。
var classroomType = new GraphQLObjectType({
name: 'Classroom',
description: 'A classroom in a school',
fields: () => ({
clid: globalIdField('Classroom'),
course: {
type: GraphQLString,
description: 'The course assigned to this classroom.'
},
enrollments: {
type: enrollmentConnection,
description: 'The students in a classroom',
args: connectionArgs,
resolve: (classroom, args) => connectionFromArray(classroom.enrollments.map(getEnrollment), args)
}
}),
interfaces: [nodeInterface],
});gloablIdField必须被称为id吗?这听起来很奇怪。如果是这样的话,如何将其映射到不称为id的db中的id字段?
发布于 2016-12-16 00:17:28
如果需要全局id字段为“clid”,可以将id的名称更改为Node接口中的clid,也可以保留id,并在命中DB的解析器方法中为该字段应用别名。
备选案文1如下所示:
interface MyNode {
clid: ID!
}
type Classroom implements MyNode {
clid: ID!
...
}选项2
graphql-继电器公开的'globalIdField‘函数接受一个idFetcher作为第二个参数。您可以将其更改为:
id: globalIdField('Classroom', (obj, context, info) => obj.clid)然后,您还需要在您的突变解析器中将id字段化名为clid。
https://stackoverflow.com/questions/41175180
复制相似问题