Maison  >  Questions et réponses  >  le corps du texte

Impossible de recevoir des données MySQL via GraphQL

<p>J'essaie d'utiliser GraphQL et MySQL dans un serveur Node.js Express. </p> <p>Mais chaque fois que j'exécute la requête, j'obtiens l'erreur suivante : </p> <p>Le message d'erreur est le suivant :</p> <pre class="brush:php;toolbar:false;">{ "erreurs" : [ { "Message" : "Itérable attendu, mais n'en a pas trouvé pour le champ "RootQueryType.getAllGoals".", "emplacements" : [ { "ligne": 2, "colonne": 3 } ], "chemin": [ "obtenir tous les objectifs" ] } ], "données" : { "getAllGoals" : nul } }</pré> <p>Voici ma requête GraphQL : </p> <pre class="brush:php;toolbar:false;">requête { obtenirTouslesGoals { titre progrès but } }</pré> <p>J'obtiens le résultat attendu de "SELECT * FROM (MY TABLE)", mais lorsque j'essaie de le renvoyer en tant que résolveur GraphQL, cela me donne une erreur comme celle-ci : </p> <pre class="brush:php;toolbar:false;">const RootQuery = new GraphQLObjectType({ nom : "RootQueryType", des champs: { obtenir tous les objectifs : { tapez : nouveau GraphQLList (GoalType), résoudre (parent, arguments) { return db.query("SELECT * FROM myTable", (erreur, résultat) => { si (erreur) lance une erreur console.log(JSON.parse(JSON.stringify(result))) retourner JSON.parse(JSON.stringify(result)) }) } } } })</pré> <p>J'ai vérifié mon GraphQLObjectType GoalType pour détecter tout conflit, mais je n'ai rien trouvé. </p>
P粉092778585P粉092778585418 Il y a quelques jours451

répondre à tous(1)je répondrai

  • P粉340264283

    P粉3402642832023-08-30 12:30:40

    Je l'ai déjà corrigé, il me suffisait de créer une promesse contenant la requête (comme ci-dessous) :

    async resolve(parent, args) {
                    var p = new Promise((resolve, reject) => {
                        db.query("SELECT * FROM myTable", (err, result) => {
                            console.log(JSON.parse(JSON.stringify(result)))
                            resolve(JSON.parse(JSON.stringify(result)))
                        })
                    })
                    return p
                }

    répondre
    0
  • Annulerrépondre