Backend 공부 끄적 (13)

최창서·2022년 7월 14일
0

Graphql => Code-First / Schema-First

기존 Apollo-Server 방식?
=> Schema-First(typeDefs를 직접 하나하나 작성하는 방식)

=> Code-First
이미 작성된 resolver 코드에서 필요한 부분을 가져와 schema를 만들어줌
typeDefs를 작성하지 않아도 됨
각 폴더의 service, resolver가 module에서 합쳐지고 모든 api module이 app.module로 합쳐지게 된다.

graphql과 typescript의 type 작성방식

표에 저장 => MySQL / TypeORM

shell에서 mysql 실행

mysql -u root -p
비밀번호 입력
데이터베이스 목록 : show databases
데이터베이스 선택 : use 데이터베이스 이름
테이블 목록 : show tables
원하는 데이터 찾기 : select * from 테이블이름 

보통은 DBeaver 같은 tool을 사용하여 DB를 확인함
DBeaver에서도 터미널에서처럼 똑같이 SQL query를 사용할 수 있다.

많은 SQL query를 외우기 힘들기 때문에 ORM(TypeORM)을 사용한다.

nest.js DOCS에서 mysql 연결하는 법

MongoDB와 마찬가지로 entity를 만들어주고 app.module에 연결해주면된다. keyColumn 설정은 필수 MongoDB에 id와 같은 역할

nest.js로 게시물 등록/조회 API

resolver에서 @Query , @Mutation 으로 게시글조회, 게시글등록 api를 만든다.

  1. fetchBoard의 경우 Board라는 entity를 만들어줘야 graphql의 typeSchema가 만들어진다.
    객체형태로 만들어지기 때문에 import 할때 [] array 안에 넣어주어야 한다.

  2. createBoard의 경우 @Arg로 frontend에서 받아오는 입력값을 설정해주는데 이때 값을 따로 하나씩 받아주는 방법도 있고, createBoardInput과 같이 Input type으로 한번에 묶어주는 방법이있다.

profile
프론트엔드 개발자

0개의 댓글