次の基本的な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"
]
}
]
}
_
このエラーの原因は何ですか?
上記のコードは、codesandboxで確認できるように機能します。 https://codesandbox.io/s/olzj9vvpk5
しかし、クエリを{}
のようなものに変換すると同じエラーが返されるので、パスとconsole.logクエリを確認してパスを確認してください。エクスポートは正しいように見えますが、コーススターターファイルから確認できるように、ファイルを保存するのを忘れている可能性があります。クエリは{}
です。もう一度ご確認ください。
また、このコードが公開gitリポジトリにある場合は、リンクを共有してください。
私はこの質問に答えたことを知っていますが、私にとってこの問題を修正した唯一のことは、info引数も渡すことでした。