无法通过GraphQL接收mysql数据
P粉092778585
2023-08-29 18:02:24
<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>
我已经修复了,我只需要创建一个包含查询的promise(如下所示):