首頁  >  問答  >  主體

無法透過GraphQL接收mysql數據

<p>我正在嘗試在一個Node.js Express伺服器中使用GraphQL和mysql。 </p> <p>但每次執行查詢時都會出現以下錯誤:</p> <p>錯誤訊息如下:</p> <pre class="brush:php;toolbar:false;">{ "errors": [ { "message": "Expected Iterable, but did not find one for field \"RootQueryType.getAllGoals\".", "locations": [ { "line": 2, "column": 3 } ], "path": [ "getAllGoals" ] } ], "data": { "getAllGoals": null } }</pre> <p>這是我的GraphQL查詢:</p> <pre class="brush:php;toolbar:false;">query { getAllGoals { title progress goal } }</pre> <p>我從"SELECT * FROM (我的表)"中得到了預期的結果,但是當我嘗試將其作為GraphQL的resolver返回時,它給了我一個錯誤,如下所示:< ;/p> <pre class="brush:php;toolbar:false;">const RootQuery = new GraphQLObjectType({ name: "RootQueryType", fields: { getAllGoals: { type: new GraphQLList(GoalType), resolve(parent, args) { return db.query("SELECT * FROM myTable", (err, result) => { if (err) throw err console.log(JSON.parse(JSON.stringify(result))) return JSON.parse(JSON.stringify(result)) }) } } } })</pre> <p>我已經檢查過我的GraphQLObjectType GoalType是否有任何衝突,但是沒有發現任何問題。 </p>
P粉092778585P粉092778585418 天前456

全部回覆(1)我來回復

  • P粉340264283

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

    我已經修復了,我只需要建立一個包含查詢的promise(如下所示):

    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
                }

    回覆
    0
  • 取消回覆