NodeJS
-
typescript에서의 class, interface 그리고 duck typeNodeJS 2024. 6. 27. 17:22
typescript에서의 duck typing?다음 코드가 타입스크립트에서도 안될꺼라 생각했다.class CatInfo { age: number; breed: string; constructor(age: number) { this.age = age; this.breed = "C1"; }}class CatInfo2 { age: number; breed: string; constructor(age: number) { this.age = age; this.breed = "C2"; }}let c1:CatInfo = new CatInfo(10);let c2:CatInfo2 = new CatInfo2(6)function hello(c: CatInfo) { console.log(..
-
Typescript에서 특정 key를 가진 타입 생성NodeJS 2024. 6. 25. 17:21
약속된 키만 가진 클래스를 생성하려다 실패했습니다. 검색을 해보니, Type이나, Record를 사용하라고 되어 있네요.type을 이용한 처리type DayOfTheWeek = "sunday" | "monday" | "tuesday" | "wednesday" | "thursday" | "friday" | "saturday";type ChoresMap = { [DAY in DayOfTheWeek]: string };const chores: ChoresMap = { // ERROR! Property 'saturday' is missing in type '...' "sunday": "do the dishes", "monday": "walk the dog", "tuesday": "water th..
-
nestjs에서 guard에 Global service Inject 처리NodeJS 2024. 6. 20. 17:18
nestjs에서 guard에 Global service Inject 처리guard에서 특정 Module의 서비스를 사용하고 있는 상화에서 해당 guard를 다른 Module에서 사용하려면 사용하려는 Module에서 해당 Service를 import 해야 합니다. 이를 Global 처리를 이용한 전략 스토어를 사용하는 예제 입니다.Global Map 생성 및 전략 등록// Global로 사용될 Map 생성// https://github.com/lahuman/daily-quest/blob/main/api/src/auth/strategy-storage.tsexport const StrategyStorage = new Map();// https://github.com/lahuman/daily-quest/blob..
-
[Nestjs TIP] whitelist 사용시 주의점!NodeJS 2024. 6. 18. 17:18
whitelist 옵션 사용시 주의점!프로퍼티 제거하기또한, 유효성 검사 파이프는 메서드 핸들러가 수신해서는 안 되는 프로퍼티를 필터링할 수 있습니다. 이 경우 허용 가능한 속성을 화이트리스트에 추가할 수 있으며, 화이트리스트에 포함되지 않은 속성은 결과 객체에서 자동으로 제거됩니다. 예를 들어, 처리기에서 이메일 및 비밀번호 속성을 기대하지만 요청에 나이 속성도 포함된 경우 이 속성은 결과 DTO에서 자동으로 제거될 수 있습니다. 이러한 동작을 사용하려면 화이트리스트를 true로 설정하세요.app.useGlobalPipes( new ValidationPipe({ whitelist: true, }),);적용 실패 원인 분석프로퍼티 제거하기를 보고 whitelist를 추가 했더니, 빈 객체가 넘어..
-
[Nestjs TIP] Request Header에 validate 처리NodeJS 2024. 6. 17. 17:16
Nestjs에서 Request Header validate 처리 방법Validate Headers 를 참고해서 처리 했습니다.validateCustomDecorators 옵션을 true롤 꼭 설정 해야 합니다.// main.tsasync function bootstrap() { // ... app.useGlobalPipes( new ValidationPipe({ validateCustomDecorators: true // { const headers = ctx.switchToHttp().getRequest().headers; if ( typeof property === 'string' || typeof property === 'number' || ..
-
nestjs에서 registerAsync 사용시 isGlobal 설정NodeJS 2024. 6. 12. 16:12
nestjs에서 registerAsync 사용시 isGlobal 설정useFactory에 isGlobal을 설정 했지만, 동작 하지 않아서 테스트 해보다 보니 위치가 아래와 같습니다.@Module({ imports: [ ConfigModule.forRoot({ envFilePath: ['.env.local', '.env'], isGlobal: true, load: [database, logging, redis, cache, throttler], }), CacheModule.registerAsync({ isGlobal: true, // 여기에 들어가야 한다. imports: [ConfigModule], inject: [ConfigSe..
-
nestjs에서 swagger사용시, generic 타입에 대한 response schema 처리NodeJS 2023. 6. 5. 14:01
페이징 처리시 다음의 DTO를 사용하고 있습니다. export class Pagination { @ApiProperty() public results: T[]; @ApiProperty() public page_total: number; @ApiProperty() public total: number; constructor(paginationResults: PaginationResultInterface) { this.results = paginationResults.results; this.page_total = paginationResults.results.length; this.total = paginationResults.total; } } 다른 부분의 표현은 문제가 없는데, generic 타입인 p..
-
정규식을 이용해서 package-lock.json의 주소를 변경 처리NodeJS 2023. 6. 2. 14:00
package-lock.json에서 Nexus Repository 변경시 처리 방법 1. package-lock.json 파일에 대하여 package-lock.json 파일은 NPM 패키지 매니저에서 사용하는 파일 중 하나로, 프로젝트의 의존성(dependency) 정보를 저장하는 파일입니다. 이 파일은 npm install 명령을 실행할 때 자동으로 생성되며, 프로젝트에 필요한 의존성 패키지의 버전 정보를 담고 있습니다. 만약 Nexus Repository의 URL이 변경되거나 새로운 Nexus Repository를 사용해야 하는 경우, package-lock.json 파일을 업데이트해야 합니다. package-lock.json 파일의 구조는 다음과 같습니다. { "name": "lahuman", "v..