참고 https://en.wikipedia.org/wiki/Object_(computer_science) 객체란? 객체 지향 프로그래밍에서 객체가 뜻하는건 무엇일까요? 보통 객체지향에서 객체는 변수, 함수, 데이터 구조의 혼합을 뜻합니다. C언어의 Structure에서 메서드가 추가되었다고 생각하면 편합니다. (엄밀히 따지면 더 복잡하지만) 특히 Class 기반의 객체 지향 프로그래밍 언어에서 Class에 의해 생성된 Instance를 나타냅니다. 객체지향프로그래밍이란? 그러면 객체 지향 프로그래밍은 또 뭘까요? OOP는 현실세계의 객체들을 모델링하고 그런 객체들끼리 상호작용하는 프로그램을 개발하는 패러다임입니다. 객체들의 상태와 행동을 캡슐화해서 코드의 재사용성, 유지보수성, 확장성을 높이는 걸 목적으..
참고 https://docs.nestjs.com/techniques/database#async-configuration https://github.com/myvoltron/typeorm-configuration/tree/master/src 개요 Nest.js 환경에서 환경변수를 로드할 때 @nestjs/config 패키지를 사용합니다. 해당 패키지와 함께 TypeORM configuration 하는 방법을 알아봅니다. 참고로 여기서 쓰이는 방법은 다른 패키지 쓸 때도 적용할 수 있습니다. 일단 환경변수 설정하기 feat. ConfigModule 우선 환경변수 로드를 위해서 ConfigModule 설정을 해야합니다. 저는 해당 모듈의 설정 파일을 src/config/config.validator.ts 에 ..
참고 typeorm-extension docs https://min-nine.tistory.com/80 https://github.com/tada5hi/typeorm-extension https://github.com/myvoltron/typeorm-seeding Seeder란? 데이터베이스에 초기 데이터 및 테스트 용 더미 데이트를 입력해주는 도구입니다. 권한 정보나 관리자 계정같은 데이터는 초기에 필요한 정보인데 이를 Seeder를 사용해서 미리 입력할 수 있습니다. 테스트할 때 필요한 데이터들을 편리하게 채워넣을 수 있습니다. 우선 셋업을 설명하기 전에, 보통 TypeORM Seeding을 위해서 구글링을 해보면 typeorm-seeding이라는 패키지를 사용한다는걸 알 수 있습니다. 하지만 두 가..
참고 https://stackoverflow.com/questions/74542474/how-to-create-custom-separate-file-repository-in-nestjs-9-with-typeorm-0-3-x 우선 기본적으로 다음과 같은 entity가 있다고 가정하고 진행하겠다. import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm'; @Entity() export class User { @PrimaryGeneratedColumn() id: number; @Column() name: string; } TypeORM 0.2.x 버전에서의 custom repository import { EntityRepository, ..
참고 https://typeorm.io/delete-query-builder#soft-delete https://github.com/myvoltron/typeorm-soft-delete Soft Delete란? 실제로 데이터를 삭제시키는 방법이 Hard Delete 삭제여부를 알 수 있는 컬럼에 삭제를 표현하는 방법이 Soft Delete, 즉 실제로 삭제하지는 않음 따라서 실제로 삭제시키지 않고 삭제된 것처럼 표현이 가능해서 Soft Delete된 데이터가 남아있으니 이를 활용할 수 있어서 현업에서는 Soft Delete가 권장되는 분위기입니다. TypeORM에서 Soft Delete를 하는 방법 방법 장점 단점 직접 구현 1. 자기가 원하는 방식으로 soft delete를 구현할 수 있다. 1. 조회..
*이 필기는 웹 프로그래밍 튜토리얼에서 보고 작성합니다. 1. 동기 처리와 비동기 처리 함수를 실행할 때 보통 실행 컨텍스트 스택에 올라가고 함수 코드들이 실행된다. 그리고 함수가 끝나고 나서 이 스택에 올라간 함수가 팝되어 제거된다. 이 처럼 실행 컨텍스트 스택에 함수 실행 컨텍스트가 푸시되는 것은 함수 실행의 시작을 알리는 것이다. 그래서 함수의 실행 순서는 스택을 통해 관리되는데 문제는 이 스택이 하나밖에 없어서 2개 이상의 함수를 동시에 실행할 수 없다. 무조건 실행 컨텍스트 스택에 실행중인 함수가 끝나야 다음 함수가 실행될 수 있다. 자바스크립트 엔진은 이 처럼 한 번에 하나의 테스크만 실행할 수 있는 싱글 스레드 방식으로 동작한다. 그래서 처리에 시간이 걸리는 태스크를 실행한다면 다음에 실행시..