분류 전체보기
-
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: ..
-
[Javascript] Class 와 ObjectLanguage/Javascript 2021. 10. 14. 15:20
Class 와 Object Class 연관 있는 데이터들이 fields 와 method 로 종합적으로 묶여있는 것 Data Class : fields 로만 이루어진 Class Class 는 데이터가 직접 들어가 있지는 않으며, 들어올 수 있는 데이터를 한 번만 선언한다. 붕어빵을 만드는 틀과 비슷하다고 생각하면 된다 Object Class 에서 실제로 데이터를 넣어 만들어진 것으로 Class 에서 새로운 instance 를 생성하면 Object 가 되는 것이다 Class 를 이용해서 여러 개의 Object 생성이 가능하다 Class 는 틀만 있는 것이기에 메모리에 올라가 있지 않지만, Object 는 데이터를 넣기 때문에 메모리에 올라가 있다 Class 가 붕어빵을 만드는 틀이라면 Object 는 틀로 ..
-
[Javascript] FunctionLanguage/Javascript 2021. 9. 28. 20:11
function function 은 기본적으로 input 을 받아서 잘 처리한 후 output(return) 을 한다 함수는 function Name, input, output 을 잘 작성하는게 중요하다 function declaration function name (params1, params2 ...) { body ... return; } 한 가지의 함수는 한 가지의 일만 수행하도록 하여야 한다 함수 명은 어떤 것을 수행하는 역할을 하므로, 동사형태 혹은 command 형식으로 지정하는 것이 좋다 :smile: Javascript 에서 function 은 Object 로 간주된다 따라서 변수에 할당이 가능하고 파라미터로 전달이 가능하며 함수를 return 할 수도 있는 것이다 Parameters 일반..
-
[Javscript] OperatorLanguage/Javascript 2021. 9. 28. 20:02
let 과 const let: 메모리에서 read, write가 가능하다(mutable) const: 메모리에서 read 만 가능하다. 즉, 변수에 값이 할당되면 변경 할 수 없다(immutable) 변수를 변경할 이유가 없다면 왠만하면 const 를 사용하자! const 의 장점 : 보안성이 좋다, 유지보수 시 사람의 실수를 줄일 수 있다. 메모리에 값이 저장되는 방법 primitive type: 일반 값이 저장되는 방법 object type: 객체가 저장되는 방법 operator increment : ' ++ ' 변수 = ++ 값: 값을 증가 후 변수에 할당 변수 = 값 ++: 값을 변수에 할당 후 증가let count = 2 const pre_increment = ++count con..
-
Javascript - Module(export, import)Language/Javascript 2021. 9. 26. 22:13
module 거대한 코드들이 작은 파일로 나눠질 수 있도록 한다. 모듈 덕분에 import, export 를 할 수 있게된다. Dynamic Module : 어플리케이션 로딩이 빨라진다. Named Exports 파일 혹은 모듈이 원하는 만큼 많은 수의 Named Exports 를 가질 수 있다. // math.js export const plus = (a, b) => a+b; export const minus = (a, b) => a-b; export const divide = (a, b) => a/b; // main.js import {plus} from "./math"; import 하고 싶은 함수의 이름을 중괄호({}) 안에 쓰면된다. 여기서 중요한 점은 반드시 export 된 이름과 import..
-
TypeScript 타입 정리Language/Typescript 2021. 9. 23. 22:37
Typescript Type 타입 스크립트는 일반 변수, 매개 변수, 객체 속성 등에 타입을 지정할 수 있다. 형식 function Example(a: Type, b: Type): RuturnType { return a + b; } let variable: Type = Example(1, 2); - 예제 ```typescript function add (a: number, b: number): number { return a + b; } const sum_num: number = add(1, 2); const err_sun_num: String = add(1, 2); // ERROR Type 선언 Boolean True/False 값을 나타내는 타입이다. let isDone: boolean = false..