GraphQL查询返回错误“无法为非空字段返回空”

And*_*L64 6 javascript node.js graphql

我有一个基本的GraphQL查询设置,如下所示:

Query.js:

const Query = {
    dogs(parent, args, ctx, info) {
        return [{ name: 'Snickers' }, { name: 'Sunny' }];
    },
};

module.exports = Query;
Run Code Online (Sandbox Code Playgroud)

schema.graphql:

type Dog {
    name: String!
}
type Query {
    dogs: [Dog]!
}
Run Code Online (Sandbox Code Playgroud)

我创建了一个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;
Run Code Online (Sandbox Code Playgroud)

然后,我尝试dogs如下查询:

query {
  dogs {
    name
  }
}
Run Code Online (Sandbox Code Playgroud)

但是我没有从狗的数组中获取名字,而是得到了以下错误:

{
  "data": null,
  "errors": [
    {
      "message": "Cannot return null for non-nullable field Query.dogs.",
      "locations": [
        {
          "line": 2,
          "column": 3
        }
      ],
      "path": [
        "dogs"
      ]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

似乎是什么导致此错误?

小智 0

上面的代码可以在codesandbox中看到:https ://codesandbox.io/s/olzj9vvpk5

但是,当我将 Query 转换为类似的内容时,{}它会返回相同的错误,因此请检查您的路径和 console.log Query 以验证路径。您的导出看起来正确,但您可能忘记保存文件,正如我从课程入门文件中看到的那样,查询是一个{}. 请仔细检查。

另外,如果此代码位于公共 git 存储库中,请分享链接。