본문 바로가기

# GraphQL/GraphQL.js

타입스크립트 GraphQL Input Object Type 클래스



필드에 Args 전달하기


필드에 args 속성을 기술하면 매개변수를 사용할 수 있으며,

매개변수는 resolve에서 2번째 인자로 전달됩니다.

let tuple = new GraphQLObjectType({
    name: "tuple",
    fields: {
        x: {
            type: GraphQLString
        },
        y: {
            type: GraphQLInt
        }
    }
});

let query = new GraphQLObjectType({
    // name pattern
    // ^[_a-zA-Z][_a-zA-Z0-9]*$
    name: "pass_argument_query",
    description: "필드에 매개변수를 전달한다.",
    fields: {
        pass: {
            type: tuple,
            args: {
                x: {
                    type: GraphQLString
                },
                y: {
                    type: GraphQLInt
                }
            },
            resolve: (parent, args) => {
                // 매개변수는 args에 전달된다.
                let x = args.x;
                let y = args.y;
                console.log(x, y);

                return args;
            }
        }
    }
});





Input


GraphQL Input Object Type을 사용하면 공통되는 매개변수를 묶을 수 있습니다.

function foo(a, b, c, x) -> foo(input, x)

function bar(a, b, c, y) -> bar(input, y)



아래의 SDL은,


아래의 타입스크립트로 표현될 수 있습니다.

let tupleInput = new GraphQLInputObjectType({
    name: "tuple_input",
    fields: {
        x: {
            type: GraphQLString
        },
        y: {
            type: GraphQLInt
        }
    }
});

let query = new GraphQLObjectType({
    // name pattern
    // ^[_a-zA-Z][_a-zA-Z0-9]*$
    name: "input_object_query",
    description: "필드에 매개변수를 전달한다.",
    fields: {
        pass: {
            type: tuple,
            args: {
                input: {
                    type: tupleInput
                }
            },
            resolve: (parent, args) => {
                // 매개변수는 args에 전달된다.
                let input = args.input;
                let x = input.x;
                let y = input.y;
                console.log(x, y);

                return input;
            }
        }
    }
});