無法透過GraphQL接收mysql數據
P粉092778585
P粉092778585 2023-08-29 18:02:24
0
1
504
<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粉092778585
P粉092778585

全部回覆(1)
P粉340264283

我已經修復了,我只需要建立一個包含查詢的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
            }
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板