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.
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();
}
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 }
})
});