I think the issue is that the field in my schema.js file is called something other than 'id' because the field is called something else in the database.
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],
});
Does the gloablIdField HAVE to be called id
? That would seem strange. If so, how do I map that to an id field from the db not called id
?
If you need your global id field to be 'clid', you can either change the name of the id to clid in your Node interface or you can keep it id and apply an alias to the field in the resolver methods that hit your DB.
Option 1 would look like this:
Option 2
The 'globalIdField' function exposed by graphql-relay accepts an idFetcher as second argument. You could change it to this:
You would then also need to alias the id field to clid in your mutation resolvers as well.