I'm making a demo GraphQL API as a learning project which is using Apollo-server-express, Babel, Knex.js and PostgreSQL.
Query resolver went well but found a problem at mutation, returning null for non-nullable field.
// userMutation.js
import knex from '../libs/knex';
const userMutation = {
create: function(data) {
return knex('users')
.insert(data)
.returning('*');
}
};
...
// Mutation.js
import userQuery from '../../queries/userQuery';
import userMutation from '../../mutations/userMutation';
const Mutation = {
async createUser(parent, args, ctx, info) {
const { data } = args;
const emailTaken = userQuery.getByEmail(data.email);
if (emailTaken) throw new Error('Email is taken');
const user = {
...data
};
const result = await userMutation.create(user);
console.log(result);
return result;
}
};
// typeDefs.js
type Mutation {
createUser(data: CreateUserInput!): User
}
And I make a mutation:
mutation {
createUser(
data: { lastName: "One", email: "some@one.com", password: "okay123" }
) {
email
}
}
Then...
{
"errors": [
{
"message": "Cannot return null for non-nullable field User.email.",
"locations": [
{
"line": 3,
"column": 5
}
],
"path": [
"createUser",
"email"
],
"extensions": {
"code": "INTERNAL_SERVER_ERROR"
}
}
],
"data": {
"createUser": null
}
}
What am I doing wrong? Please help.