GrapeMilk 2024. 8. 14. 01:49

React Graphql Masterclass

32. Data Resolver - Overriding A Field

 

GraphQL 서버는 graphql 요청시 scalar 타입이면 값을 그대로 response하고 object 타입이면 object 타입의 각 필드마다 관련된 매핑 함수가 있는지 확인한다. 

 

예를 들어 아래와 같은 데이터 구조에서

type Query {
    sayHello: String
    customers: [Customer]!
}

type Customer {
    id: ID
    name: String
    age: Int
    city: String
}

public class Customer {
    private Integer id;
    private String name;
    private Integer age;
    private String city;;
}

 

쿼리 요청시에 sayHello 필드는 string을 바로 내려주지만, Customer 필드를 확인할 때 해당 필드는 Object 타입이므로 각 필드가 scalar를 리턴해도 관련 매핑 함수가 있는지 확인한 뒤 실행한 값을 내려준다.

 

아래와 같은 age관련 함수가 있다면 항상 100을 내려줄 것이다.

    @SchemaMapping(typeName = "Customer")
    public Mono<Integer> age() {
        return Mono.just(100);
    }