GraphQL Devrait Itératif, mais n'a pas trouvé un terrain xxx.yyy
Je suis en train d'essayer 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 si le type
de mon resolveLibrary
est droit, car à tout exemple j'ai eu un coup d'oeil à ils ont utilisé new GraphQL.GraphQLList()
, mais dans mon cas, j'ai vraiment envie de retourner 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.
Donc mon library
schéma fournit une user
champ qui retourne le droit des données (la console.journal est appelé).
Cela ressemble peut-être un problème avec le type d'utilisateur que vous importez. Pouvez-vous mettre à jour votre question d'inclure le code pour
Merci beaucoup, vous avez raison, l'exportation de mon user.js s'était trompé...
De spectacle de modifier votre solution s'il vous plaît?
user.js
?Merci beaucoup, vous avez raison, l'exportation de mon user.js s'était trompé...
De spectacle de modifier votre solution s'il vous plaît?
OriginalL'auteur Vetterjack | 2017-10-01
Vous devez vous connecter pour publier un commentaire.
J'ai rencontré ce problème, mais il semble assez évident pourquoi cela se produit. Il semble que ce que vous êtes de retour à partir de votre programme de résolution ne correspond pas au type de retour dans votre schéma.
Spécifiquement pour le message d'erreur
Expected Iterable, but did not find one for field library.user.
, votre schéma attend un tableau(Itératif), mais vous n'êtes pas retourner un tableau dans votre résolveurJe l'avais en ma schema.js:
login(email: String, password: String): [SuccessfulLogin]
J'ai changé:
login(email: String, password: String): SuccessfulLogin
Avis les crochets autour de "SuccessfulLogin". Il est jusqu'à vous de décider si vous souhaitez mettre à jour le programme de résolution de type de retour ou de mettre à jour le schéma attentes de la
Crochets signifie que vous devez recevoir un objet iterable objet ou un tableau dans la réponse JSON. Toutes mes excuses pour la réponse tardive
merci et pas de soucis. je crois que j'ai maintenant,
[]
signifie qu'il est de retourarray
, sans, est de retourobject
Dang, je l'ai changé pour quelque chose et j'ai oublié de le changer en arrière lmao. Merci.
OriginalL'auteur Vineeth
Je suppose que votre
user
est une instance deGraphQLList
c'est pourquoi le champ utilisateur s'attend à résoudre à un objet itérable.OriginalL'auteur Uziel Valdez
J'ai eu le même problème. J'ai été en utilisant le trouver à la place du filtre.
OriginalL'auteur Alfrex92