J'essaie actuellement GraphQL avec NodeJS et je ne sais pas pourquoi cette erreur se produit avec la requête suivante:
{
library{
name,
user {
name
email
}
}
}
Je ne suis pas sûr que la variable type
de ma resolveLibrary
soit exacte, car dans tous les cas, j’ai jeté un œil sur leur utilisation de new GraphQL.GraphQLList()
, mais dans mon cas, je souhaite vraiment renvoyer un objet utilisateur unique, pas un tableau d’utilisateurs.
Mon code:
const GraphQL = require('graphql');
const DB = require('../database/db');
const user = require('./user').type;
const library = new GraphQL.GraphQLObjectType({
name: 'library',
description: `This represents a user's library`,
fields: () => {
return {
name: {
type: GraphQL.GraphQLString,
resolve(library) {
return library.name;
}
},
user: {
type: user,
resolve(library) {
console.log(library.user);
return library.user
}
}
}
}
});
const resolveLibrary = {
type: library,
resolve(root) {
return {
name: 'My fancy library',
user: {
name: 'User name',
email: {
email: '[email protected]'
}
}
}
}
}
module.exports = resolveLibrary;
Erreur:
Error: Expected Iterable, but did not find one for field library.user.
Ainsi, mon schéma library
fournit un champ user
qui renvoie les bonnes données (le fichier console.log est appelé).
Je suppose que votre user
est une instance de GraphQLList
, c’est la raison pour laquelle l’utilisateur du champ s’attend à être résolu en un objet itérable.
J'ai eu le même problème. J'utilisais plutôt le filtre de recherche.