这是我的代码
模式
gql`
type Query {
user: X!
}
type User {
name: String!
}
type Time {
age: Int!
}
union X = User | Time
`;
解析器
{
X: {
__resolveType: obj => {
if (obj.name) return { name: "Amasia" };
if (obj.age) return { age: 70 };
return null;
}
},
Query: {
user: () => {
return {
name: "Amasia"
};
}
}
}
请求
query {
user{
... on User {
name
}
... on Time {
age
}
}
}
我发出请求时会出现错误
“抽象类型X必须在运行时解析为字段Query.user的对象类型,其值{名称:\“ Amasia \”},接收到\“ {名称:\” Amasia \“} \”。类型应提供一个\“ resolveType \”函数,或者每种可能的类型应提供一个\“ isTypeOf \”函数。“
原因是什么?
答案 0 :(得分:1)
resolveType
函数应返回一个字符串,其中包含抽象类型应解析为的具体类型的名称。您正在返回一个对象,而不是字符串。在这种情况下,您应该返回"User"
或"Time"
。