Framework
-
NestJS, TypeORM - Entity 상속(inheritance)Framework/NestJS 2021. 11. 22. 14:19
NestJS, TypeORM - Entity inheritance 프로젝트를 진행하면서 entity 를 개발하던 도중 entity 별로 중복되는 컬럼들(idx, createdAt, updatedAt, status...)이 있었다. 이를 해결할 방법을 찾아보니 Entity inheritance(Entity 상속) 이라는 것이 있었다. 해결 방법 1 - Concrete Table Inheritance 공통 되는 필드를 추상 클래스를 두고 상속을 통해 사용하는 방식이다. common.entity.ts 파일을 만든 후, 다른 Entity 들을 개발할 때는 상속해서 사용할려고 한다. common.entity.ts import { Column, CreateDateColumn, PrimaryGeneratedColum..
-
NestJS Circular Dependency(순환 종속성) 문제Framework/NestJS 2021. 11. 22. 13:17
Nest.JS Circular Dependency(순환 종속성) 문제 NestJS 를 통해 프로젝트 구현중에 아래 사진과 같은 문제가 발생했다. Circular Dependency(순환 종속성) 공식문서 를 확인해보면 순환 종속성은 클래스 A 에 클래스 B 가 필요하고, 클래스 B 에 클래스 A 가 필요할 때 발생한다고 합니다. 가능한 최대한 순환종속성은 피해야 하지만 항상 그렇게 개발할 수는 없기에 NestJS 에서는 해결 방안을 제공해줍니다. 해결방법: 전달 참조(Forward Reference) @nestjs/common 에서 패키지로 제공해주는 forwardRef() 기능을 사용하면 해결할 수 있습니다. 클래스에 중첩을 허용할 수 있도록 하는 유틸리티 기능입니다. xxx.module.ts 에서 모..
-
NestJS, TypeORM - 비밀번호 단방향암호화(Bcrypt)Framework/NestJS 2021. 11. 10. 21:41
NestJS, TypeORM 비밀번호 단방향 암호화 비밀번호가 그대로 데이터베이스에 저장되면 안되기 때문에 단방향 암호화를 통해 암호화된 비밀번호를 저장해야합니다. 암호화를 도와주는 모듈인 Bcrypt 를 설치해서 사용할 것입니다. npm install bcrypt npm install @types/bcrypt 그리고 entity 에서는 @Beforeinsert() 데코레이터를 사용합니다. 데이터가 insert 되기 전에 실행할 수 있도록 도와주는 데코레이터입니다. entity 란 NestJS 에서 정의하는 데이터베이스 모델이다. 1.Entity(xxx.entity.ts) 에 @Beforeinsert 추가하기 import { Entity, Column, PrimaryGeneratedColumn, Befo..
-
Express, NestJS - API 인식 문제Framework/NestJS 2021. 10. 22. 21:07
API 기능 개발 중 user/:id 라는 api 와 user/search api 가 있는데 search 부분을 user/:id의 path variable 로 인식하여 user/search api 가 호출이 안되는 문제가 발생했었습니다. 이유는 코드 상에서 user/search 부분이 user/:id 보다 밑에 있기에 발생한 문제였습니다. 1. 문제발생 코드 // Err @Get(":id") getUserId(@Param('id') userId: string): string { ~~~ } @Get("search") search(){ ~~~ } 2. 문제해결 코드 // OK @Get("search") search(){ ~~~ } @Get(":id") getUserId(@Param('id') userId: ..
-
[NodeJS] crypto Module을 이용한 단방향 암호화Framework/NodeJS 2021. 7. 20. 19:02
crypto란 무엇일까? 문자열을 암호화, 복호화, 해싱할 수 있도록 도와주는 모듈입니다crypto 를 사용하여 Javascript 를 사용하는 웹 서비스에서 사용자의 정보를 안전하게 지킬 수 있습니다 * 해시(Hash) 단방향 암호화 기법으로 해시함수, 해시 알고리즘을 이용해서 고정된 암호화 된 문자열로 바꿔줍니다 * 해시 함수 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수입니다. 매핑 전 원래 데이터 값을 key, 매핑 후 데이터의 값을 해시 값 이라고 합니다. 그리고 매핑하는 과정을 해싱이라고 합니다 암호화 방식 단방향 암호화 : 복호화를 할 수 없는 암호화 방식입니다. 양방향 암호화 : 복호화가 가능한 암호화 방식입니다. * 복호화 암호화 된 문자열을 원래대로 되돌리는 방법..
-
[NodeJS] 메일 전송 기능 구현 - Nodemailer + GmailFramework/NodeJS 2021. 6. 27. 13:51
Nodemailer는 기본적으로 Node.js 사용자가 메일 전송 기능구현을 위해서 기본적으로 사용하는 모듈이라고 합니다.https://nodemailer.com/about/ 0. Gmail권한 설정하기 * 추후 기능 구현중 접근 관련 오류가 발생할 수 있으므로 여기 링크에서 '보안 수준이 낮은 앱 허용'을 사용으로 바꿔줘야 합니다. 그리고 내 구글 계정에 대한 액세스를 허용해줘야 하기 때문에 https://accounts.google.com/DisplayUnlockCaptcha 해당 링크에서 '계속'을 눌러서 허용해줘야 합니다. 1. nodemailer 모듈 설치$ npm install nodemailer 2. nodemailer 모듈 불러오기const nodemailer = require('nodem..