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)
}
}
所以当用户查询,并提供ARGS然后 你ARGS将{ 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 }
})
});
错误意味着你返回'null',但是用'type:new GraphQLNonNull(GraphQLString)'你声明用户名可能永远不会返回'null'。要么返回别的不是'null',要么声明类型为'type:new GraphQLString()' – marktani