web-dev-qa-db-fra.com

GraphQL Iterable attendu, mais n'en a pas trouvé pour le champ xxx.yyy

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é).

9
Vetterjack

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.

4
Uziel Valdez

J'ai eu le même problème. J'utilisais plutôt le filtre de recherche.

0
Alfrex92