我的解析器应该返回一个联合类型,但无论它返回什么(User
或一个具有message
键和String
类型值的对象,即我的UserNotFoundError
类型),它总是返回"__typename": "User"
。为什么会这样?我如何更正它?
解析器:
async validateUser(
_: undefined,
{ email, password }: { email: string; password: string }
) {
const user = await prisma.user.findUnique({
where: {
email,
},
});
console.log('user before ', user);
if (!user || user.password !== password) {
const err = { message: 'Invalid user or password' };
return err;
}
return user;
},
类型定义
type User {
email: String!
password: String
id: ID!
}
type UserNotFoundError {
message: String!
}
union UserOrError = User | UserNotFoundError
type Query {
allUsers: [User!]!
userByEmail(email: String!): User!
validateUser(email: String!, password: String!): User
}
在Apollo Studio/Explorer中的结果,无论解析器实际返回的是什么:
{
"data": {
"validateUser": {
"__typename": "User"
}
}
}
1条答案
按热度按时间hm2xizp91#
我没有在返回的对象上显式设置
__typename
。这对我来说是固定的:
第一个