web-dev-qa-db-fra.com

GraphQL "Impossible de renvoyer null pour non-nullable"

En essayant de créer mon premier serveur graphQL, voici ce que j’ai écrit jusqu’à présent.

https://Gist.github.com/tharakabimal/7f2947e805e69f67af2b633268db0406

L'erreur suivante apparaît sur GraphQL lorsque j'essaie de filtrer les utilisateurs par nom d'utilisateur.

Erreur sur GraphQL

L'erreur se produit dans le champ Utilisateurs de UserQueriesQL.js. 

Y at-il quelque chose de mal dans la façon dont je passe des arguments sur les fonctions de résolution?

user: {
type: UserType,
args: { 
  username: {
    name: 'username',
    type: new GraphQLNonNull(GraphQLString)
  }
},
resolve: function(parentValue, args) {
  return User.find( args ).exec();
}
7
King Julian
user: {
type: UserType,
args: { 
  username: { type: new GraphQLNonNull(GraphQLString) }
},
resolve: function(parentValue, args) {
  return User.find( args ).exec(); // User.find({username: 'some name'}).exec(); 
// will work as matches your mongoose schema
}

Auparavant, dans args, vous fournissez un object avec un objet imbriqué username so,

args: {  // this won't match your mongoose schema field as it's nested object
  username: {
    name: 'username',
    type: new GraphQLNonNull(GraphQLString)
  }
}

ainsi, lorsque l'utilisateur interroge et fournit des arguments, alors vos arguments seraient { username: { name: 'abcd' } }

// args = {username: {name: 'abcd'}}

et resolve() exécute User.find({username: {name: 'abcd'}}).exec(); 

/* searching for username{} object, but
your mongoose schema is username: String */

qui ne correspond pas aux champs de votre base de données, qui retournera toujours un tableau vide [], également qui ne correspondra pas à votre type de champ GraphQL, car il s'agit de GraphQLNonNull

après avoir visionné la Gist, le problème concerne rootquery

le problème est avec rootquery

let RootQuery = new GraphQLObjectType({
    name: 'RootQueryType',
    fields: () => ({
        users: { type:UserQueries.users, resolve: UserQueries.users }
        user: { type: UserQueries.user, resolve: UserQueries.user }
    })
});
1
p0k8_