0

我们正在使用 graphql-spqr 从我们的 Java 后端 api 和模型生成 graphql 模式。

今天以获取产品为例,我们注释了一个看起来像这样的方法:

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

我们希望避免创建一个新端点来检索 Product 中的额外字段。

有没有办法为不属于模型的字段定义解析器?(注解与否)

作为一个例子,让我们假设我们的 Java 模型是一个 Product + 两个端点:

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
}
4

1 回答 1

0

您所需要的就是这样的(例如,在您现有的allProducts()方法旁边:

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

然后该frames字段将附加到其上下文 Product类型。或者换句话说:该Product类型将根据需要获得一个名为 的额外字段frames

确保查看 SPQR 中的测试。它们充当大多数功能的展示。

于 2020-11-20T22:30:06.463 回答