전체 글301 [class-transformer] plainToInstance & instanceToPlain 모델 매퍼(ModelMapper) 스프링의 경우 DTO와 엔티티간의 변환을 할 때 ModelMapper나 Mapstruct라는 라이브러리를 많이 사용합니다. 그러면, 객체가 가질 수 있는 프로퍼티는 옮겨지게 되고, 아닌 프로퍼티는 버려지게 되죠. JS는 그러한 역할이 없어서 상당히 불편했습니다. Interface를 고집한다는 점과 Class instance와 Literal object 간 변환이 어렵다는 점이 이유입니다. 그나마 쓸만한 라이브러리가 AutoMapper인데 사용하기가 어렵고 유지보수가 중지되었죠. 그래서 최근에 나와서 핫한 라이브러리 중 하나가 class-transformer입니다. 이 라이브러리는 ModelMapper 역할을 훌륭하게 수행할 수 있고, 상당히 강력하고 간단합니다. 최근 c.. 2023. 4. 25. 스칼라 서브쿼리 테이블은 이전 게시글에서 사용해했던 pokemon 과 ability 이다. PRIMARY_ABILITY, SUB_ABILITY 값으로 ability 테이블 NAME 컬럼에서 이름을 가져오고 싶다. 우선 쿼리를 먼저 그려보면, SELECT "NAME", "NUMBER", (SELECT "NAME" FROM ability WHERE ability."ID" = pokemon."PRIMARY_ABILITY" ) AS p_ability, (SELECT "NAME" FROM ability WHERE ability."ID" = pokemon."SUB_ABILITY" ) AS s_abilityFROM pokemon; 이러하다. 정말 간단하지 않은가. 결과는, 원하는 형태로 잘나왔다. 그렇다면 스칼라 서브쿼리를 Ty.. 2023. 4. 7. (relations: ManyToOne, OneToMany / JoinColumn), typeORM option: logging 으로 실행된 SQL 구문 보기 개발자 포지션으로 두 번째 회사인 이 곳에서... 새로운 기술스텍을 많이 발견하고 있는 중이다. 그 중 데이터베이스와 관련된 TypeORM을 공부하면서 정리해보자. 자... Type + ORM 에서 ORM이란, Object Relational Mapping 의 약자이다. 그리고 이것은 기술이다.어떤 기술이냐? 객체지향 프로그래밍과 관계형 데이터 베이스를 연결해주는 기술이라고 구글 선생님께서 말하신다. 즉, ORM은 SQL과 일반적으로 코드 에디터(Visual Studio Code 같은...) 우리가 작업하는 코드(자바스크립트)를 연결시켜준다고 이해하면 쉬울 것 같다. 뭐, 더 거창한 설명이 분명히 있을 것이다. 그리고 ORM 앞에 붙은 Type은 자바스크립트의 확장개념인 TypeScript를 말한다. 개.. 2023. 4. 6. [NestJs] 끄적끄적 ■ NestJS 설치하고 새로운 프로젝트 생성하면 이것저것 생김.eslintrc.js : 개발자의 코드 스타일 정의prettierrc : 코드 포맷 형식 정의 ■ npm run start:dev 실행. 실행순서main.ts 순서 상 제일 먼저 로드되는 스크립트. 여기에 NestFactory.create()에 의해 루트모듈 정의, 포트설정 ■ 진입 순서?module → controller → service ■ 모듈의 구성① module, ② entity, ③ service, ④ repository, ④ pipe ■ 모듈 파일 생성 명령어base: nest g module boards / nest g controller boards / nest g service boards option: --no-spec.. 2023. 3. 29. HttpClient.jsonp 와 HttpInterceptor의 충돌 외부 서버에 HTTP 요청이 필요한 상황에서 CORS 문제로 접근이 제한된다면 HttpClient의 jsonp로 API 호출을 할 수가 있다. 우선 내가 겪은 상황에 대해 설명하자면, jsonp로 HTTP 요청을 보내면 "jsonp는 HttpRequest Header를 포함할 수 없습니다??"와 비슷한 문구의 에러 메시지를 출력해준다. Angular에서 제공하는 HTTP_INTERCEPTORS에 의해 HTTP와 관련된 로직들이 HTTP Request 중간에 가로채지며 발생한 문제였다. HTTP_INTERCEPTORS가 모든 HTTP 요청을 중간에 가로채어 request header에 특정 값들을 세팅해주고 있었고, 위에서 언급한 "httpRequest Header를 포함할 수 없습니다"가 출력된 것이다... 2023. 3. 23. [Angular] Form Angular에서 다루는 form은 두 가지이다. 1. Reactive forms 2. Template-driven forms (참고링크) [1] 다른 점 Reactive Template-driven Setup 명시적, 컴포넌트 클래스에서 생성 new FormControl('') 암시적, 디렉티브에 의해 생성됨 Data model 구조화 및 불변 (Structured and immutable) 구조화되지 않고 변경 가능 (Unstructured and mutable) Data flow 동기식 비동기식 Form validation functions directives [2] 확장성의 차이 Reactive form ① 뷰와 데이터 모델 간에 동기식 데이터흐름 ② 테스트를 위한 설정이 덜 필요 → change.. 2023. 3. 15. 이전 1 ··· 7 8 9 10 11 12 13 ··· 51 다음