본문 바로가기

graphql5

[Nexus] NexusGenObjects와 NexusGenFieldTypes의 차이 nexus는 graphql 서버를 code first하게 작성할 수 있게 도와주는 라이브러리 이다. nexus의 여러 장점중 하나는 생성된 graphql schema를 기반으로 typescript type을 제공해준다는 것이다. 덕분에 우리는 type safe하게 개발을 할 수 있다. nexus schema를 만들 때 다음과 같이 작성해주면 된다. const schema = makeSchema({ types: [ /* All schema types provided here */ ], outputs: { schema: path.join(__dirname, '../../my-schema.graphql'), typegen: path.join(__dirname, '../../my-generated-types... 2023. 3. 24.
[GraphQL] custom scalar type 사용하기 scalar라는 단어는 선형대수학에서 처음 나왔는데, 행렬과 벡터에서 하나의 수를 구분하기 위해 사용되었다고 합니다. 이 의미는 프로그래밍에서 사용하는 것과 유사한데, 자료구조에서 원소를 구분할 수 있는 single value를 scalar라고 합니다. [12, 6, true, "a", "b"] 배열에 있다면 각각의 원소값은 number(12,6), string(a, b), boolean(true)로 구분할 수 있으며 이때 number, string, boolean이 scalar 값을 의미합니다. scalar와 대조되는 개념은 compound이며 compound는 array, map, set, struct 처럼 여러 scalar 값을 포함하는 것을 의미합니다. 종종 scalar와 primitive를 헷갈.. 2022. 10. 9.
[GraphQL] null propagation GraphQL type field는 기본적으로 nullable이다. null값에 대해 허용하는 type languaged의 경우 대부분 기본적으로 non-null합니다. 변수를 선언하면 기본적으로 null을 허용하지 않으며 null값을 허용하는 경우 명시적으로 표시해줘야 합니다. - typescript type User = { name: string // non-null hobby?: string // nullable } - c# Nullable num; int? num; - kotlin var a : String? = null 이와는 반대로 GraphQL field는 기본적으로 nullable합니다. 때문에 반드시 값이 존재하는 경우 명시적으로 non-null을 의미하는 (!)를 표시해줘야 합니다. t.. 2022. 10. 1.
[Nexus] Source Types으로 parent 타입 수정하기 Source란 ? Nexus를 사용해서 schema를 만들 때, sourceTypes 옵션을 추가할 수 있습니다. sourceTypes는 source의 type을 내가 원하는 타입으로 매핑해주는 역할을 합니다. 여기서 source는 resolver의 첫번째 인자를 의미합니다. 클라이언트가 아래와 같이 질의한다고 해봅시다. query{ user{ - resolver (1) email - resolver (2) address - resolver (3) posts{ - resolver (4) content - resolver (5) } } } 우리가 질의하는 모든 field에는 resolver가 존재합니다. 질의는 resolver에서 처리되며 결과값을 클라이언트에서 받아보는 것이죠. resolver는 4개의 .. 2022. 4. 9.