无法通过GraphQL接收mysql数据
P粉092778585
P粉092778585 2023-08-29 18:02:24
0
1
505
<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
            }
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板