【发布时间】:2018-11-03 02:54:18
【问题描述】:
我与用户及其成员有这种关系。会员字段是一个用户和多个会员之间的连接。
const MembershipType = new GraphQLObjectType({
name: 'Membership',
interfaces: [nodeInterface],
fields: {
id: globalIdField(),
user: {
type: new GraphQLNonNull(UserType),
resolve(parent, args, ctx: Context) {
return ctx.userById.load(parent.user_id);
},
},
role: {
type: new GraphQLNonNull(GraphQLString),
},
team: {
type: GraphQLString,
},
createdAt: {
type: new GraphQLNonNull(GraphQLString),
resolve(parent) {
return parent.created_at;
},
},
updatedAt: {
type: new GraphQLNonNull(GraphQLString),
resolve(parent) {
return parent.updated_at;
},
},
},
});
export default MembershipType;
const UserType = new GraphQLObjectType({
name: 'User',
interfaces: [nodeInterface],
fields: {
id: globalIdField(),
firstName: {
type: GraphQLString,
resolve(parent) {
return parent.first_name;
},
},
lastName: {
type: GraphQLString,
resolve(parent) {
return parent.last_name;
},
},
email: {
type: GraphQLString,
resolve(parent) {
return parent.email;
},
},
memberships: {
type: new GraphQLList(MembershipType),
resolve(parent, args, ctx: Content) {
return ctx.membershipsByUserId.load(parent.id);
},
},
membershipsCount: {
type: new GraphQLNonNull(GraphQLInt),
resolve(parent, args, ctx: Context) {
return ctx.userMembershipsCount.load(parent.id);
},
},
},
});
export default UserType;
这里的问题是我有这个错误,其中 MembershipType 中的用户字段 导致错误
块引用 /Users/nizarayari/Arise/arise-auth/node_modules/graphql/jsutils/invariant.js:19 抛出新的错误(消息); ^ 错误:预期 undefined 是 GraphQL 可为空的类型。 在不变量(/Users/nizarayari/Arise/arise-auth/node_modules/graphql/jsutils/invariant.js:19:11) 在 assertNullableType (/Users/nizarayari/Arise/arise-auth/node_modules/graphql/type/definition.js:261:51) 在新的 GraphQLNonNull (/Users/nizarayari/Arise/arise-auth/node_modules/graphql/type/wrappers.js:79:54) 在对象。 (/Users/nizarayari/Arise/arise-auth/src/schema/membership/MembershipType.js:25:13) 在 Module._compile (module.js:624:30) 在 Object.Module._extensions..js (module.js:635:10) 在 Module.load (module.js:545:32) 在 tryModuleLoad (module.js:508:12) 在 Function.Module._load (module.js:500:3) 在 Module.require (module.js:568:17) 在要求(内部/module.js:11:18) 在对象。 (/Users/nizarayari/Arise/arise-auth/src/schema/user/UserType.js:19:1) 在 Module._compile (module.js:624:30) 在 Object.Module._extensions..js (module.js:635:10) 在 Module.load (module.js:545:32) 在 tryModuleLoad (module.js:508:12)
这是我对用户的查询
import UserType from './UserType';
import type Context from '../../Context';
const me = {
type: UserType,
resolve(root: any, args: any, ctx: Context) {
return ctx.user && ctx.userById.load(ctx.user.id);
},
};
export default {
me,
};
没有会员资格查询,只是突变
【问题讨论】:
-
似乎
UserType可能在type: new GraphQLNonNull(UserType)中未定义。 -
是的。但找不到原因?
标签: javascript graphql graphql-js relay express-graphql