能否从两个不同的数据源解析相同的GraphQL类型?

能否从两个不同的数据源解析相同的GraphQL类型?,graphql,apollo,Graphql,Apollo,在下面的简化GraphQL模式中,有两个查询 product查询接收一个ID,查询Postgres数据库并返回包含所有字段的产品 search查询接收一个搜索词,查询Elasticsearch并返回一个产品列表,每个产品都包含所有字段 Product类型实际上是从两个不同的数据源解析的,Postgres和Elasticsearch取决于查询 另一种方法是使用search查询返回每个产品的id,然后从Postgres数据库解析剩余的产品数据。然而,考虑到您已经可以从Elasticsearch获得数

在下面的简化GraphQL模式中,有两个查询

  • product
    查询接收一个ID,查询Postgres数据库并返回包含所有字段的产品
  • search
    查询接收一个搜索词,查询Elasticsearch并返回一个产品列表,每个产品都包含所有字段
  • Product
    类型实际上是从两个不同的数据源解析的,Postgres和Elasticsearch取决于查询

    另一种方法是使用
    search
    查询返回每个产品的id,然后从Postgres数据库解析剩余的产品数据。然而,考虑到您已经可以从Elasticsearch获得数据,这似乎是一个不必要的步骤


    从两个不同的数据源解析相同的GraphQL类型可以吗?

    可以,只有数据集/实体,而不是实例/指针。。。只要源是同步的
    type Product {
      id: ID!
      name: String!
    }
    
    type Query {
      product(id: ID!): Product 
      search(searchTerm: String!): [Product]!
    }