ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • NestJS 기본강의 - 5. 권한 & 로그 & 설정
    NestJS/NestJS 기본강의 2022. 7. 11. 16:30

    유저와 게시물 데이터의 관계 형성

    1. 관계를 형성하기 위해서는 엔티티에 서로간의 필드를 넣어줘야 한다

        ㆍUser : OneToMany Relationship

        ㆍ게시글들 : ManyToOne Relationship

     

    파라미터

    1. Type

    2. inverseSide ( User클래스기준 board에서 유저로 접근하려면 board.user로 접근해야함 )

    3. Option ( eagerㆍtrue 일때는 user정보를 가져올때 board도 같이 가져옴 )

      @ManyToOne((type) => User, (user) => user.boards, { eager: false })
      user: User;
      @OneToMany((type) => Board, (board) => board.user, { eager: true })
      boards: Board[];

    QueryBuilder

    async getAllBoards(user: User): Promise<Board[]> {
        const query = this.boardRepository.createQueryBuilder('board');	//접근 게시판
    
        query.where('board.userId = :userId', { userId: user.id });		// 조건
    
        const boards = await query.getMany();				// 데이터 전부 다 가져온다
        return boards;
      }

     


    로그의 종류

    - Log : 중요한 정보의 범용 로깅

    - Warning : 치명적이거나 파괴적이지 않은 처리되지 않은 문제

    - Error : 치명적이거나 파괴적인 처리되지 않은 문제

    - Debug : 오류 발생시 로직을 디버그하는 데 도움이되는 유용한 정보이다. 개발자 용

    - Verbose : 응용 프로그램의 동작에 대한 통찰력을 제공하는 정보이다. 운영자 용

     

    로그 레벨

    - 원하는 대로 환경에 따라서 로그의 레벨을 정의해서 넣어줄 수 있다

      Log Error Warning Debug Verbose
    Development O O O O O
    Staging O O O x x
    Production O O x x x

     

    로그를 처리하기 위해서 사용하는 모듈은...

    - expressjs를 사용할 때는 Winston이란 모듈을 주로 사용하지만 nestjs에는 이미 built-in된 logger클래스가 있기에 그걸 사용

     

    private logger = new Logger('BoardsController');
    
    this.logger.verbose(`User ${user.username} trying to get all boards`);
    
    this.logger.verbose(`User ${user.username} creating a new board. 
        Payload:${JSON.stringify(createBoardDto)}`);

    설정( Configuration ) 이란?

    - 소스 코드안에서 어떠한 코드들은 개발 환경이나 운영 환경에 이러한 환경에 따라서 다르게 코드를 넣어줘야 할 때가 있으며, 남들에게 노출 되지 않아야 하는 코드들도 있다. 이러한 코드들을 위해 설정파일을 따로 만듬

     

    설정 파일은...

    - runtime 도중에 바뀌는 것이 아닌 애플리케이션이 시작할 때 로드가 되어서 그 값들을 정의하여 줍니다. 그리고 설정 파일은 여러가지 파일 형식을 사용할 수 있다. 예를 들어 XML, JSON, YAML, Environment, Variables 같은 많은 형식 이용

     

    Codebase VS Environment Variables( 환경 변수 )

    - XML, JSON, YAML 같은 경우는 Codebase에 해당하며 그리고 다른 방법은 환경 변수로 할 수 있다.

    - 주로 이 둘을 나눠서 하는 이유는 비밀번호와 API Key 같은 남들에게 노출되면 안되는 정보들을 주로 환경 변수를 이용해서 처리

    Codebase 일반적으로 Port 같이 노출되도 상관없는 정보들
    환경변수 비밀 번호나 API Key같은 노출되면 안되는 정보들

     

    설정하기 위해서 필요한 모듈

    - 윈도우에서는 win-node-env를 설치 ( 원도우는 기본적으로 환경변수를 지원 X )

    npm install -g win-node-env

    - 그리고 원도우와 맥 모두에서는 config라는 모듈을 설치받아야 한다.

    npm install config --save

     

    Config 모듈을 이용한 설정 파일 생성

    1. 루트 디렉토리에 config라는 폴더를 만든 후에 그 폴더 안에 JSON이나 YAML 형식의 파일을 생성한다

         config/default.yaml

    2. config 폴더 안에 default.yml, development.yml 그리고 production.yml 파일 생성

     

    - default.yml : 기본설정 ( 개발환경설정이나 운영환경설정에도 적용 )

    - development.yml : default.yml에서 설정한 것 + 개발환경에서 필요한 정보

    - production.yml : default.yml에서 설정한 것 + 운영 환경에서 필요한 정보

    'NestJS > NestJS 기본강의' 카테고리의 다른 글

    NestJS 기본강의 - 4. 인증  (0) 2022.07.08
    NestJS 기본강의 - 3. TypeORM  (0) 2022.07.08
    NestJS 기본강의 - 2. Pipe  (0) 2022.07.07
    NestJS 기본강의 - 1. 시작  (0) 2022.07.07

    댓글

Designed by Tistory.