最初のgraphQLサーバーを作成しようとして、これまでに書いたものをここに示します。
https://Gist.github.com/tharakabimal/7f2947e805e69f67af2b633268db0406
ユーザー名でユーザーをフィルタリングしようとすると、GraphQLに次のエラーが表示されます。
エラーはUserQueriesQL.jsのusersフィールドで発生します。
Resolve関数で引数を渡す方法に何か問題はありますか?
user: {
type: UserType,
args: {
username: {
name: 'username',
type: new GraphQLNonNull(GraphQLString)
}
},
resolve: function(parentValue, args) {
return User.find( args ).exec();
}
私はGraphQLの初心者なので、この問題に出くわしました。各ファイルを個別に調べた後、resolversにインポートするのを忘れていることがわかりました
import User from './User';
**import Post from './Post';**
const resolvers = [User, **Posts**];
たぶんこれが役立つでしょう!
_user: {
type: UserType,
args: {
username: { type: new GraphQLNonNull(GraphQLString) }
},
resolve: function(parentValue, args) {
return User.find( args ).exec(); // User.find({username: 'some name'}).exec();
// will work as matches your mongoose schema
}
_
以前は、args
で、ネストされたオブジェクトobject
を持つusername
を提供しているため、
_args: { // this won't match your mongoose schema field as it's nested object
username: {
name: 'username',
type: new GraphQLNonNull(GraphQLString)
}
}
_
したがって、ユーザーが引数を照会して提供すると、引数は_{ username: { name: 'abcd' } }
_になります
_// args = {username: {name: 'abcd'}}
_
resolve()
はUser.find({username: {name: 'abcd'}}).exec();
を実行しています
_/* searching for username{} object, but
your mongoose schema is username: String */
_
データベースフィールドとは一致しません。常に空の配列_[]
_が返され、GraphQLフィールドタイプもGraphQLNonNull
であるため一致しません。
Gist
を表示した後、問題はrootquery
にあります
問題はrootqueryにあります
_let RootQuery = new GraphQLObjectType({
name: 'RootQueryType',
fields: () => ({
users: { type:UserQueries.users, resolve: UserQueries.users }
user: { type: UserQueries.user, resolve: UserQueries.user }
})
});
_