首页  >  问答  >  正文

无法通过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 天前455

全部回复(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
  • 取消回复