graphql中类型字段的替代解析器

时间:2018-12-03 18:38:26

标签: node.js express graphql

我有一个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
                    )
                }
            }
        }
    })
})

问题是您不能在模式中两次定义播放器,并且我真的不想只是将播放器重命名为扩展中的其他名称,因为我想尝试保持其清洁

0 个答案:

没有答案