Graphql スキーマからの書籍のモデル
type Book {
id: ID
name: String
pageCount: Int
author: Author
}
だから私はBookのためにこのリゾルバーを持っています
public class BookResolver implements BookByIdQueryResolver, GraphQLQueryResolver {
private final MockRepository mockRepository;
public BookResolver(MockRepository mockRepository) {
this.mockRepository = mockRepository;
}
@Override
public BookTO bookById(String id) {
return mockRepository.getBookById(id);
}
}
それは正常に動作します。
ここで、Book の 1 つのフィールドのみを要求するこの graphql クエリを使用していると仮定します。
{
bookById(id: "someId") {
name
}
}
問題は、要求されたフィールド (この場合は名前フィールドのみ) に関する bookById メソッド レベルの情報を取得する方法です。これは GraphQLQueryResolver の概念でも可能ですか?
dataFetcher を使用した例
public DataFetcher getBookByIdDataFetcher() {
return dataFetchingEnvironment -> {
String bookId = dataFetchingEnvironment.getArgument("id");
List<SelectedField> requestedFields = dataFetchingEnvironment.getSelectionSet()
.getFields()
.stream()
.collect(Collectors.toList());
return books
.stream()
.filter(book -> book.get("id").equals(bookId))
.findFirst()
.orElse(null);
};
}
これは非常にうまく機能しますが、Resolver の方法に興味があります。出来ますか?