Graphql 订阅结果上的联合类型

Graphql 订阅结果上的联合类型,graphql,union,subscription,Graphql,Union,Subscription,没有关于如何在订阅上装载graphql联合类型的信息。有可能吗 类型订阅{ joinRequest(id:UUID!):MemberUnion! } 键入用户{…} 键入来宾{…} 联盟成员联盟=用户|来宾 而且它可以完美地处理我的查询或突变,只需要了解有关如何实现订阅的任何信息joinRequest键是userId和rolerole应代表解析器,其中应通过传递的userId参数获取user或guest信息 尝试按现在的状态启动代码后看到的错误: 对于值为{userId:“3bdb0eb5-f

没有关于如何在订阅上装载graphql联合类型的信息。有可能吗

类型订阅{
joinRequest(id:UUID!):MemberUnion!
}
键入用户{…}
键入来宾{…}
联盟成员联盟=用户|来宾
而且它可以完美地处理我的查询或突变,只需要了解有关如何实现订阅的任何信息
joinRequest
键是
userId
role
role
应代表解析器,其中应通过传递的
userId
参数获取
user
guest
信息

尝试按现在的状态启动代码后看到的错误:

对于值为{userId:“3bdb0eb5-f237-40a7-bebc-6263cc18dba5”,名称:“Trololol3”,有效负载:{…},接收到“null”的字段“Subscription.joinRequest”,抽象类型“MemberUnion”必须在运行时解析为对象类型。“MemberUnion”类型应提供“resolveType”函数,或者每个可能的类型应提供“isTypeOf”“功能。”

导出查询、变体和订阅的my Resolver文件:

导入。。。。
导出默认值{
查询:{
…用户,
表册
…产品
},
突变:{
…列出突变,
…产品销售
},
订阅:{
…产品订购,
…列表订阅
},
产品:{
items:({id:itemId})=>method({itemId})
},
会员工会:{
//eslint禁用下一行无下划线悬挂
__resolveType:obj=>{
if(obj.role==USER\u role.GUEST){
返回“客人”;
}
if(obj.role==USER\u role.USER){
返回“用户”;
}
返回null;
}
},
....

正如我之前所说的,当我在任何查询或突变响应上实现
MemberUnion
时,如果我想选择可以是user或guest的用户对象,那么这一切都很好。

订阅可以返回抽象类型(联合和接口)就像查询和突变一样,处理订阅的抽象类型没有什么不同

如果您看到了特定的错误,那么问题通常在于您对所讨论的摘要的
resolveType
函数的实现。例如,如果您没有首先提供
resolveType
函数,或者如果它的编写方式不总是返回带有o名称的字符串对象类型

基于错误中显示的值(
{userId:“3bdb0eb5-f237-40a7-bebc-6263cc18dba5”,名称:“Trololo3”,有效负载:{…}
),问题还可能在于如何解析
joinRequest
字段。可能您首先没有字段的解析程序,或者解析程序返回的对象的形状与GraphQL预期的形状不匹配(即
用户
来宾


如果没有看到更多的相关代码,就无法确定问题出在哪里。

谢谢,我想出了一个主意,在订阅之前使用
resolve
方法
subscribe
方法,并定义我需要返回的信息类型(来宾或用户对象)