전체 글 91

Mocking

- 가짜 데이터를 사용하는 방식으로 주로 DB에 실제로 데이터를 넣지 않기 위한 대체용으로 사용된다. 가짜 서비스 (MockingService)를 만들고, providers 부분의 useClass에 MockingService를 넣어준다.import { AppController } from './app.controller';import { AppService } from './app.service';import { Test, TestingModule } from '@nestjs/testing';class MockAppService { getHello(): string { return '나는 가짜다!!!'; }}describe('AppController', () => { let appControl..

코딩/TestCode 2024.04.27

Jest

- nest에는 기본적으로 테스트코드로 유명한 Jest가 깔려있음.src/app.controller.spec.ts 가 있다. - 1개 테스트하기간단하게 aaa.spec.ts 라는 파일을 만들고// 1. 한개 테스트하기it('더하기 테스트', () => { const a = 1; const b = 2; expect(a + b).toBe(3);});(it 뒤에는 테스트 코드 명칭, tbBe()는 내가 예상하는 값)yarn test를 돌려보면이렇게 나온다. 다시 알맞은 예상값인 3으로 toBe를 바꾸고 test를 돌리면정상적으로 테스트가 통과된다. - 여러개 테스트하기// 2. 여러개 묶음으로 테스트하기describe('나의 테스트 그룹', () => { it('더하기 테스트', () => { c..

코딩/TestCode 2024.04.27

.prettierrc, .eslintrc 줄바꿈 변경

nest하는데 줄 바뀌면 코드 지저분해지고 한줄로 보는게 깔끔해 보이는 코드가 줄바꿈 되어서 변경방법을 좀 알아보았다. (nest 기본 설정 파일 기준)- .prettierrc 코드 변경 => printWidth가 추가 되었다. (printWidth 작성하면 80뜨는게 기본이 80인듯){ "singleQuote": true, "trailingComma": "all", "printWidth": 90} 이렇게 하면 줄은 안바뀌는데 줄 안바뀐 코드에 대해서 빨간줄 떠있다. 그 이유는 .eslintrc 설정에서 충돌이 나기 때문.. - .eslintrc 코드 변경 => extends 에서 prettier/recommended 코드를 삭제하는 방법도 있으나 어떤 오류를 만날지 모르니....

코딩/VSCode 2024.04.24

Swagger

- Swagger란 간단히 말해 RestAPI에 대한 설명과 테스트를 해볼 수 있는 사이트를 만드는 것이다.    @ApiOkResponse(): 200 OK 응답에 대한 설명을 제공합니다.@ApiCreatedResponse(): 201 Created 응답에 대한 설명을 제공합니다.@ApiAcceptedResponse(): 202 Accepted 응답에 대한 설명을 제공합니다.@ApiNoContentResponse(): 204 No Content 응답에 대한 설명을 제공합니다.@ApiMovedPermanentlyResponse(): 301 Moved Permanently 응답에 대한 설명을 제공합니다.@ApiBadRequestResponse(): 400 Bad Request 응답에 대..

코딩/Nest.js 2024.04.24

Transaction

// 주입 private readonly dataSource: DataSource, // 사용 const queryRunner = this.dataSource.createQueryRunner(); // 생성 await queryRunner.connect(); // 연결 await queryRunner.startTransaction(); // 시작 try { const 작업 = await queryRunner.manager.save(테이블명, 데이터) // 작업 await queryRunner.commitTransaction(); // 커밋 마무리 작업할거 } catch (error) { await queryRunner.rollbackTransaction(); // 롤백 throw new InternalS..

코딩/TypeORM 2024.04.24

2024.04.23

오랜만에 글을쓴다. 오랜만에 밤을 샜다.. 그것도 코딩하느라..ㅎㅎ 뭐 요즘 새벽 4~5시쯤 자기도 해서 밤낮 바뀔조짐이 있긴했는데, 요즘 광인사 1차 프로젝트로 했던 팜팜 사이트 express로 만든 서버를 nest로 변환하는 작업을 하는 중이다. 아무래도 nest 수업들은거 실제로 써봐야할듯 싶기도 하고, 수업은 GraphQL에 대해서 하다보니 RestAPI에 대한 경험도 쌓아보고 싶어서 작업을 시작했었다. 그리고 오늘 아 이제는 어제 저녁이군.. TypeORM 때문에 엄청 스트레스 받으며 엄청나게 시간을 소비했다. 그래서 내 블로그 글에 오늘 갑자기 TypeORM 관련 게시글들이 막 생기기도 했다.. ㅎㅎ 이게 nest 수업에서는 그냥 1:1, 1:N, N:N 연결하는 방법만 알려주고, 게다가 Gr..

사용 방법 예시들

// Module 에서 import imports: [TypeOrmModule.forFeature([Auth, User])],// Service에 주입@InjectRepository(Auth) private readonly authRepository: Repository, // 다른 테이블도 작업하려면 똑같이// @InjectRepository(테이블)// private readonly authRepository: Repository,// 해줘야하는데, 한번에 여러게 하는건 지양한다고 함. 따라서 각각나눠서 service 만들고 처리// 사용 예시 코드들// findOne, where, relationfindOneByUserId({ user_id }: { use..

코딩/TypeORM 2024.04.22

entities

- entities 작성하기 각 api폴더에 entities 폴더 만들고 entities 작성 = 테이블 만든다고 보면됨 ++ 가격 같은거에 제약사항(최소 0 이상) 걸어주려면 글로벌 파이프 설정 필요함 https://springdream0406.tistory.com/89 글로벌 파이프 - 설치 yarn add class-validator class-transformer - main.ts에 GlobalPipe 설정 app.useGlobalPipes(new ValidationPipe()); ++ 추가적인 공부 필요함. springdream0406.tistory.com // 이것저것 짬뽕해서 예시로 넣음 @Entity() export class Farm { @PrimaryGeneratedColumn('in..

코딩/TypeORM 2024.04.22