我有一个基本的GraphQL查询设置,如下所示:
Query.js:
const Query = {
dogs(parent, args, ctx, info) {
return [{ name: 'Snickers' }, { name: 'Sunny' }];
},
};
module.exports = Query;
schema.graphql:
type Dog {
name: String!
}
type Query {
dogs: [Dog]!
}
我创建了一个用于启动服务器的函数createServer()
,如下所示:
const { GraphQLServer } = require('graphql-yoga');
const Mutation = require('./resolvers/Mutation');
const Query = require('./resolvers/Query');
const db = require('./db');
function createServer() {
return new GraphQLServer({
typeDefs: 'src/schema.graphql',
resolvers: {
Mutation,
Query,
},
resolverValidationOptions: {
requireResolversForResolveType: false,
},
context: req => ({ ...req, db }),
});
}
module.exports = createServer;
然后我尝试如下查询dogs
:
query {
dogs {
name
}
}
但是我没有从狗的数组中获取名字,而是得到了以下错误:
{
"data": null,
"errors": [
{
"message": "Cannot return null for non-nullable field Query.dogs.",
"locations": [
{
"line": 2,
"column": 3
}
],
"path": [
"dogs"
]
}
]
}
什么似乎导致了此错误?
答案 0 :(得分:0)
上面的代码可以在codesandbox中看到:https://codesandbox.io/s/olzj9vvpk5
但是,当我将Query转换为类似{}
之类的内容时,它会返回相同的错误,因此请检查您的路径和console.log查询以验证路径。您的导出看上去正确,但是您可能忘记了保存文件,正如我从课程入门文件中看到的那样,查询是{}
。请仔细检查。
如果此代码位于公共git repo中,请共享链接。
答案 1 :(得分:0)
我知道这个问题已经回答了,但是对我来说,唯一解决此问题的方法是也传递info参数。
答案 2 :(得分:0)
就我而言,我在src文件夹中创建了一个新的Query.js文件,但我使用Query = require('./ resolvers / Query')导入Query并在那里进行了编码。因此,尝试检查路径,我认为问题就在那里。