我有一个api网关,可以将3个端点的模式缝合在一起,并且具有带有玩家字段的Rating类型,可以解析字符串,但是我希望能够扩展Rating类型,因此可以更改解析器以返回Player类型而不仅仅是玩家ID,这是评分模式:
type Rating {
id: ID
ratingType: RatingTypes
rating: String
player: String
}
在另一个端点中,我有一个播放器架构,并且在我的api网关中,我试图扩展Rating类型,如下所示:
const linkTypeDefs = `
extend type Rating {
player: Player
}
`;
然后,我将模式合并在一起,并为播放器创建另一个解析器:
const allSchemas = await Promise.all(endpoints.map(ep => getIntrospectSchema(ep)))
const mergedSchema = mergeSchemas({
schemas: [...allSchemas, linkTypeDefs],
resolvers: mergeInfo => ({
Rating: {
player: {
fragment: `fragment RatingFragment on Rating { player }`,
resolve (parent, args, context, info ) {
const id = parent.player
return mergeInfo.delegate(
'query',
'player',
{
id
},
context,
info
)
}
}
}
})
})
问题是您不能在模式中两次定义播放器,并且我真的不想只是将播放器重命名为扩展中的其他名称,因为我想尝试保持其清洁