web-dev-qa-db-ja.com

GraphQLクエリがエラーを返す「null不可フィールドにnullを返すことはできません」

次の基本的な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"
      ]
    }
  ]
}
_

このエラーの原因は何ですか?

6
AndrewL64

上記のコードは、codesandboxで確認できるように機能します。 https://codesandbox.io/s/olzj9vvpk5

しかし、クエリを{}のようなものに変換すると同じエラーが返されるので、パスとconsole.logクエリを確認してパスを確認してください。エクスポートは正しいように見えますが、コーススターターファイルから確認できるように、ファイルを保存するのを忘れている可能性があります。クエリは{}です。もう一度ご確認ください。

また、このコードが公開gitリポジトリにある場合は、リンクを共有してください。

0
Harshit Pant

私はこの質問に答えたことを知っていますが、私にとってこの問題を修正した唯一のことは、info引数も渡すことでした。

0
Charles Harring