해결된 질문
작성
·
258
답변 1
0
파일(모듈)이 분리되어 있지만,
ApolloServer 인스턴스를 생성할 때에는 하나의 배열로 합쳐진상태로 typeDefs를 전달하게 됩니다.
이 때 ApolloServer는 배열 내의 정의들을 하나로 병합하게 되는데,
그 과정에서 extend하지 않은 채 동일한 네이밍으로 정의된 type들은 cascading됩니다.
즉 Query, Mutation이라는 동일한 타입명들은 전부 덮어씌워져서, 마지막 하나만 살아남게 되는거죠.
반면 extend type은 기존에 정의된 type에 대해 내용을 '추가'하는 개념이기 때문에
병합하는 과정에서 '덮어씌우'는 대신 기존 type이 확장되게 됩니다.
더 자세한 내용은 다음 링크의 "Extending types in multiple files" 챕터를 참고하세요.
https://www.apollographql.com/blog/backend/schema-design/modularizing-your-graphql-schema-code/
아하...그러면 예를들어서 messages.js에서 Query를 선언하지 않았는데 extend type Query를 선언할 수 있는것도 ApolloServer 인스턴스를 생성할떄 하나의 배열로 합쳐지니까 그떄 index.js 에서 선언한Query를 extend 하게되는거죠?