Apollo联邦如何实现2个服务返回不同的模型给同一个方法?
创始人
2024-09-09 12:01:15
0

假设我们有2个服务,Service A和Service B。它们都有一个名为getUser的方法,并且返回不同的用户模型。为了在Apollo联邦中使用它们,我们首先需要定义一个公共的User模型。

type User @key(fields: "id") {
  id: ID!
  name: String!
}

接下来,我们需要分别定义Service A和Service B的User模型,以及如何将它们映射到公共模型。

Service A的User模型:

type UserA {
  id: ID!
  name: String!
  age: Int!
}

extend type User @key(fields: "id") {
  id @external
  userA: UserA
    @requires(fields: "id")
}

Service B的User模型:

type UserB {
  id: ID!
  name: String!
  email: String!
}

extend type User @key(fields: "id") {
  id @external
  userB: UserB
    @requires(fields: "id")
}

在这里,我们使用了extends关键字来扩展公共User模型。然后,我们定义了与Service A或Service B的User模型对应的字段,例如userA和userB。我们还为这些字段定义了@requires指令,以指定需要哪些字段来解析它们。

一旦定义了User模型和它们的扩展,我们可以在服务的resolver中调用它们。

Service A的resolver:

{
  Query: {
    getUser(_, { id }, { dataSources }) {
      // Fetch UserA model from Service A's data source
      const userA = dataSources.serviceA.getUser(id);

      // Map UserA model to the common User model
      return {
        id: userA.id,
        name: userA.name,
        userA
      };
    }
  }
}

Service B的resolver:

{
  Query: {
    getUser(_, { id }, { dataSources }) {
      // Fetch UserB model from Service B's data source
      const userB = dataSources.serviceB.getUser(id);

      // Map UserB model to the common User model
      return {
        id: userB.id,
        name: userB.name,
        userB
      };
    }
  }
}

最后,我们需要在federation service中添加Service A和Service B。这将允许我们将它们合

相关内容

热门资讯

外挂绝活!uupoker透视,... 外挂绝活!uupoker透视,扑克之星辅助-总是是真的有辅助教程(哔哩哔哩)1、点击下载安装,扑克之...
外挂妙计!智星菠萝可以辅助吗,... 外挂妙计!智星菠萝可以辅助吗,佛手在线大菠萝为什么都输-一贯真的是有辅助方法(哔哩哔哩)1、下载好佛...
外挂攻略!来玩app 德州 辅... 外挂攻略!来玩app 德州 辅助,约局吧如何查看是否有挂-果然一直总是有辅助方法(哔哩哔哩)1、每一...
外挂烘培!sohoo辅助,po... 外挂烘培!sohoo辅助,pokeplus脚本-真是有辅助教程(哔哩哔哩)一、pokeplus脚本可...
外挂大纲!大菠萝免费辅助,哈糖... 外挂大纲!大菠萝免费辅助,哈糖大菠萝软件下载-切实存在有辅助工具(哔哩哔哩)1、哈糖大菠萝软件下载透...
外挂教程书!聚星ai辅助工具激... 外挂教程书!聚星ai辅助工具激活码,德普之星透视辅助软件激活码-原来有辅助技巧(哔哩哔哩)1、很好的...
外挂资料!佛手大菠萝有挂吗,拱... 外挂资料!佛手大菠萝有挂吗,拱趴大菠萝万能挂-竟然一直总是有辅助脚本(哔哩哔哩)1、超多福利:超高返...
外挂攻略!aa poker辅助... 外挂攻略!aa poker辅助,德州局透视-原来是真的有辅助教程(哔哩哔哩)1、许多玩家不知道德州局...
外挂手筋!德州局脚本,poke... 外挂手筋!德州局脚本,pokemomo辅助工具-原来是有辅助脚本(哔哩哔哩)1、玩家可以在pokem...
外挂办法!pokermaste... 外挂办法!pokermaster辅助器,pokerworld修改器-好像是真的有辅助方法(哔哩哔哩)...