[오픈소스] GraphQL 연습을 위한 보일러플레이트
Express 웹서버에서 GraphQL과 MongoDB를 사용해보기 위해서 글을 찾아봤습니다. 언제나처럼 지식을 공유해주시는 다른 개발자 분의 링크가 있어서 원하는 수준의 코드를 빠르게 작성할 수 있었습니다.
제가 작성한 코드는 링크와 거의 동일합니다. 차이점은 GraphQL 코드를 작성한 방식 및 import export 연습겸 require을 의도적으로 사용하지 않은 점입니다. 사용법은 깃허브 README.md를 통해서 설명해두었기 때문에 웹개발의 경험이 있으신 분들은 README만 읽어보셔도 충분합니다. 이번 글에선 경험이 없으신 분들을 위해서 조금 더 자세하게 순서를 설명합니다.
1. 설치하기
터미널을 여시고 코드를 다운받습니다.
git clone https://github.com/joshephan/Express-GraphQL-MongoDB-boilerplate.git
모듈을 설치해줍니다.
npm install
2. MongoDB 만들기
데이터베이스는 로컬에서 진행하셔도 상관없습니다. 제 경우엔 mlab에서 샌드박스용 무료 DB를 생성해서 테스트를 진행했습니다.
[MongoDB Hosting: Database-as-a-Service by mLab
mLab is the largest cloud MongoDB service, hosting over 900,000 deployments worldwide on AWS, Azure, and Google. Get started with a free database.
https://mlab.com/](https://mlab.com)
mlab에서 회원가입 후 데이터베이스를 추가합니다. 아마존, 마이크로소프트, 구글 중 아무거나 선택하시고 샌드박스 타입을 선택합니다.
이후에 원하시는 리전을 선택해주고, 데이터베이스 이름을 입력합니다.
3. MongoDB 연결하기
생성이 완료되면 해당 DB를 들어가 DB에 엑세스할 수 있는 사용자를 추가합니다.
Add database user 버튼을 눌러 사용자를 추가하시면 됩니다.
4. config.json 수정하기
config.json 파일을 수정하면 준비는 끝납니다. 방금 사용자를 추가했던 아이디를 dbuser에 넣고, dbpassword에는 비밀번호를 입력합니다. uri는 표준 MongoDB URI의 @ 다음 부분을 입력하시면 됩니다.
5. 서버 작동하기
터미널에서 서버를 작동시켜봅시다.
npm run dev
웹브라우저를 켜고, localhost:4000/graphql에 접속합니다.
위와 같은 창이 나타납니다.
6. GraphQL 테스트해보기
MongoDB와 연결이 제대로 됐는지 확인해봅시다. users 쿼리를 통해 id 값만 가져와봤습니다.
여러분의 화면에선 아마 빈 객체가 리턴될텐데, 이유는 아직 DB 안에 데이터를 추가한게 없기 때문입니다. DB에 데이터를 추가, 삭제 등을 하기 위해선 graphql의 mutation을 통해 할 수 있습니다.
mutation은 좌측 상단 부분에 명령의 내용과 리턴받을 키 등을 작성해주고, 좌측 하단의 QUERY VARIABLES에 json 형태로 데이터를 작성해줍니다. 이후 화살표 버튼이나 ctrl + 엔터를 눌러 코드를 실행하면 우측과 같은 결과를 받을 수 있습니다.
7. 코드 수정
새로운 명령을 추가하거나 데이터를 GET하기 위해선 mutation과 query를 수정해주면 됩니다. graphql/index.js 파일에서 수정하실 수 있습니다. mutation은 resolver와 연결되는데, resolver에 들어가는 함수는 db 디렉토리의 user.ctrl.js와 post.ctrl.js에서 관리하실 수 있습니다.
깃허브 소스코드 링크:
[joshephan/Express-GraphQL-MongoDB-boilerplate
Simple boilerplate for GraphQL practice on Express with MongoDB - joshephan/Express-GraphQL-MongoDB-boilerplate
https://github.com/joshephan/Express-GraphQL-MongoDB-boilerplate](https://github.com/joshephan/Express-GraphQL-MongoDB-boilerplate)
More from Howdy의 블로그
See all posts특별한 법칙은 아니지만 자주 생각하려는 법칙이 있다. 향기의 법칙이라고 명명한 이 법칙은 무척이나 간단하다. 어떠한 상황에서든 상대를 유혹하라는 것이다. 원하는 것이 있다면 상대방이 원하도록 유혹하는 것이다. 이는 아주 간단한 원칙인데 동시에 매우 달성하기 어려운 법칙이기도 하다. 향…
향기의 법칙
하루가 멀다하고 사고가 터지는 것이 인간사. 인간이 만든 것 중 무엇이 대단하다 말할 수 있을까. 무엇이 완전하다 말할 수 있을까. 무엇이 영원하다 말할 수 있을까. 영원한 것은 단 하나도 없고 먼지가 쌓이지 않는 것도 단 하나도 없다. 기회 역시 영원하지 않아서 영원할 것 같은 젊음…
영원하지 않다
이카루스는 태양에 가까이 가면 안된다는 것을 알았으나 높게 날았다. 깃을 붙인 밀납이 녹아 깃이 떨어져 나가고 나서야 그는 자신의 미래를 보았다. 자유로 향하는 날개를 얻었을 때 태양을 향해서도 바다를 향해서도 안됐다. 고도를 유지하며, 섬세하게 바람을 타지 않는다면 어디로든 날아갈…
자유의 날개
인간이 보편적으로 누리는 권리는 대부분 거래를 통해 획득했다. 참정권은 군복무, 참전으로 얻었고, 링컨의 노예제 해방을 위해선 산업화된 사회에서의 흑인 인권이 필요했다. 반면 노예를 사용하는 것이 경제적 이득이 되는 남부군의 입장에서는 당시 기준으로 재산권 침해에 해당한다고 보았기에…
Comments