我可以用@graphqlquery解析模型中没有的字段吗

tquggr8v  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(331)

我们使用graphqlspqr从java后端api和模型生成graphql模式。
今天以获取产品为例,我们注解了如下方法:

@GraphQLQuery
List<Product> allProducts() {...}

我们希望避免创建新的端点来检索产品中的额外字段。
有没有办法为不属于模型的字段定义解析器((是否注解)
作为一个例子,让我们假设一个产品的java模型+两个端点:

class Product {
   String id;
   String name;
}

class Frame {
  String id;
}

// and some kind of relationship between the two
class ProductToFrame {
  String productId;
  String frameId
}

List<Product> allProducts();
List<Frame> getFramesByProductId(String productId);

我们希望graphql模式如下所示:

type Product {
  id: String
  name: String

  frames: [Frame] 
}

type Frame {
  id: String
}
06odsfpq

06odsfpq1#

你所需要的就是这样的东西(例如,在你现有的 allProducts() 方法:

@GraphQLQuery
public List<Frame> frames(@GraphQLContext Product product) {
    return getFramesByProductId(product.getId());
}

这个 frames 字段将附加到其上下文 Product 类型。或者换言之,就是 Product 类型将获得一个名为 frames ,根据需要。
确保您查看了spqr中的测试。它们可以作为大多数功能的展示。

相关问题