[ 프로젝트 ] typeorm으로 db 연결

김민석·2021년 6월 27일
0

WORKOUT!

목록 보기
4/18

참고
1. typeORM 공식 홈페이지 : Example with Express
2. TypeScript-Node-Starter : 타입스크립트로 서버 구성하면서 계속 참고할 예정
3. velog 글

서버를 구상하면서 DB와 어떻게 연결할 것인지에 대한 고민끝에 typeORM을 사용하기로 하였다. sequelize-typescript도 후보군에 있었다. 그렇지만

  1. typeORM의 문서가 더 알아보기 용이했으며
  2. typeORM이 더 typescript를 잘 활용한다는 stackoverflow의 답변과
  3. npm trends에서의 압도적인 차이

를 고려했을 때, typeORM을 사용하는 것이 적합하다고 결론내렸다. (각 장단을 확실하게 알고 사용하면 좋았겠지만, typescript와 동시에 공부하며 적용해야하는 입장에서 문서가 알아보기 쉽다는 것은 너무 큰 장점이었다.)


아래는 오늘 설정한 것들이다.

1. ormconfig.js

공식문서에는 .json 확장자를 사용하라고 되어있었지만 .js를 사용해서 dotenv로 민감한 정보를 가리기로 결정하였다.

  • synchronize option은 서버 재실행 될 때마다. 내가 작성한 데이터베이스 스키마와 강제로 일치시키는 옵션이다.
  • logging option은 생성된 쿼리가 콘솔에 계속 찍히는 옵션이다.

2. tsconfig.json

주석때문에 글자가 작게나왔다. ..😵‍💫

"emitDecoratorMetadata": true,
"experimentalDecorators": true

이 두 가지 옵션을 새로 설정해주었다.

  • emitDecoratorMetadatareflect-metadata라는 라이브러리와 (typeORM의 설명에서 설치하라 되어있다.) 연동된 설정이다
  • experimentalDecorators는 위 설정을 활성화하려면 필요했다.

둘 다 decorator와 관련된 설정이라는 것은 알겠지만 metadata에 대해서는 아직 모르겠다. 우선 설정하고 넘어갔다.

App.ts

User라는 entitiy를 만들었다.
(mysql에서는 table에 대응된다)

그리고 app.js가 실행될 때, db와 연결시키는 코드를 작성하였다.
( 잘 되었는지 확인하기 위해 user와 연결을 한번 시켜보았다.)

entity/User.ts

공식 문서의 예시를 그대로 붙였다.
(내일부터 옵션들에 대해 공부해야한다.)
(여기 데코레이터들이 있는데 이것을 사용하기 위해 tsconfig에 설정을 바꿔준 것이다.)

0개의 댓글