coding 97

npm WARN config global

Nest JS를 공부하면서 전에 사용했었던 bcript 라이브러리를 사용했었다. 이번엔 bcriptjs를 설치해서 사용해야 하는데 처음 보는 에러와 마주했다. npm WARN config global라는 에러가 나왔고 구글링을 해보니 npm버전 때문이라는 말이 많았다. 블로그를 보면서 해결했는데 방법은 PowerShell [관리자 권한] 실행 후 Set-ExecutionPolicy Unrestricted -Scope CurrentUser -Force 입력 후 Enter npm install --global --production npm-windows-upgrade 입력 후 Enter npm-windows-upgrade 입력 후 Enter npm -v로 확인! 위와 같은 방법으로 npm을 최신 버전으로 새..

coding/Error 2022.11.04

PostgresSQL TypeORM

postgresSQL : 데이터베이스 pgAdmin : 데이터베이스를 보는 툴 ORM이란 Object Relational Mappong 객체와 관계형 데이터베이스의 데이터를 자동으로 변형 및 연결하는 작업 TypeORM이란 TypeORM은 node.js에서 실행되고 TypeScript로 작성된 객체 관계형 매퍼 라이브러리 TypeORM은 MySQL, PostgresSQL, MariaDB 등 여러 데이터베이스 지원 모델을 기반으로 데이터베이스 테이블 체계를 자동으로 생성 데이터베이스에서 객체를 쉽게 삽입, 업데이트 및 삭제 가능 테이블 간 매핑(일대일, 일대다, 다대다) 간단한 CLI 명령을 제공 TypeORM 설치 및 적용 npm i pg typeorm @nestjs/typeorm --save typeo..

coding/Nest JS 2022.11.03

Nest JS 파이프

Pipe란 @Injectable() 데코레이터로 주석이 달린 클래스로 data transformation, data validation을 위해 사용됨 Nest는 메서드가 호출되기 직전에 파이프를 삽입하고 파이프는 메서드로 향하는 인수를 수신하고 이데 대해 작동함 Data Transformation이란 입력 데이터를 원하는 형식으로 변환(ex. 문자열 -> 정수) Data Validation이란 입력 데이터를 평가하고 유효한 경우 변경되지 않는 상태로 전달, 그렇지 않으면 데이터가 올바르지 않다고 예외를 발생시킴 Pipe 사용 위치 - Handler-level Pipes 핸들러 레벨에서 @UserPipes() 데코레이터를 이용해 사용 모든 파라미터에 적용 @Post() @UsePipes(pipe) crea..

coding/Nest JS 2022.11.01

Nest JS CRUD

게시물 모델 정의하기 모델을 정의할땐 class, interface를 이용 interface = 변수의 타입만 체크 class = 변수의 타입 체크, 인스턴스 생성 가능 interface로 정의 // board.model.ts export interface Board{ id: string; tile: string; description: string; status: BoardStatus; } export enum BoardStatus{ PUBLC = "PUBLIC", PRIVATE = "PRIVATE", } CR 코드 // board.service.ts @Injectable() export class BoardsService { private boards: Board[] = []; // 게시물 모두 불러..

coding/Nest JS 2022.10.31

Nest JS 개념 및 설치

Nest JS란 효율적이고 확장 가능한 Node.js서버 측 애플리케이션을 구축하기 위한 프레임워크 JS를 사용하고, TypeScript로 빌드되고, 완벽하게 지원하며 OOP (Object Oriented Programming), FP (Functional Programming) 및 FRP (Functional Reactive Programming) 요소를 사용할 수 있게 해 줍니다. Nest JS 시작하기 npm i -g @nestjs/cli nest new project-name # project-name에 원하는 이름 설정 # nest new ./(현재 위치에 파일들 설치) Nest CLI를 이용하여 위 명령어 입력 시 새 프로젝트가 디렉터리에 생성되고, 초기 핵심 Nest 파일 및 지원 모듈로 디..

coding/Nest JS 2022.10.29

node-schedule

node-schedule 시간을 설정하여 해당 코드를 시간에 맞춰 자동으로 작동하게 도와주는 모듈이다. 설치 npm i node-schedule 사용 방법 let now2 = new Date(); const compeltionTime = now2.setHours(now2.getHours() + 1); schedule.scheduleJob(compeltionTime, async () => { console.log('hi'); } 시간을 설정해주고, scheduleJob함수의 첫 번째 인자 값으로 시간을 넣고, 두 번째 인자 값으론 실행할 함수를 넣어주면 해당 시간이 되었을 때 함수를 실행시켜준다. 위의 코드는 현재 시간으로부터 1시간 더해준 시간을 설정해 주었고, 1시간 뒤에 콘솔 로그에 hi를 찍는 스케..

coding/Node.js 2022.09.14

error - entirely different commit histories

프로젝트 중 팀원 한분이 개인 s3 시크릿키를 메인 브랜치에 커밋하는 불상사가 일어났다. 다행히 커밋 기록만 지우는 방법을 찾아내서 적용해서 해당 파일과 커밋 기록을 지울 수 있었다. git filter-branch --force --index-filter "git rm --cached --ignore-unmatch 'file_path/file_name'" --prune-empty --tag-name-filter cat -- --all 위 코드를 작성해서 기록을 지웠고, 자세한 내용은 이전 게시물에서 볼 수 있다. 이렇게 모든 문제가 다 해결된 줄 알았는데 새로운 문제가 있었다. 아마 revert를 하면서 생긴 건지, 커밋 기록을 지우면서 생겼는지 정확히는 모르지만 나를 포함한 다른 팀원의 브랜치와 메인..

coding/Error 2022.09.12

github 커밋 히스토리 삭제

프로젝트 중 팀원 한분이 개인 s3 시크릿 키를 메인 브랜치에 커밋해버린 문제가 생겼다. 파일을 지우더라도 커밋 기록에 시크릿 키가 남게 되면 해커들의 공격으로 해킹될 문제가 있을 수 있다고 들었다. 커밋 기록을 지워버려야 하기 때문에 revert를 이용해서 커밋을 되돌아갔다가 수정해서 다시 커밋해서 올렸는데 파일은 없어졌지만, 커밋 기록은 계속 남아 있었다.(아마 제대로 안 된 거겠지? 모르겠다.) 해결이 안 돼서 레포를 다시 파야하나, s3를 다시 생성해야 하나 등 여러 방법을 생각했지만, 모두 최후의 수단이었고, 커밋 기록만 지우는 방법을 찾기로 했다. 같이 블로그를 뒤져가면서 기록 삭제하는 법을 찾아서 적용해서 해당 커밋 내의 내용을 지울 수 있었다. 해결 방법으로는 아래와 같이 코드로 어떤 파일..

coding/IT, CS 2022.09.12

multer, S3 - this.client.send is not a function

multer와 S3를 이용해서 이미지 파일을 S3에 업로드하는 기능을 구현하면서 발생한 오류가 있다. s3에 시크릿 키를 넣어 연결을 해주고, multer미들웨어를 만들어 파일을 받으면 바로 s3에 업로드 후 생성된 URL을 req로 받아서 DB에 저장하려고 했다. 모든 준비를 마친 후 postman을 이용해서 파일을 포함한 요청을 보내니 아래와 같은 오류를 만났다. 처음 사용해보는 기능이라서 아 시작부터 안되네.. 생각하고 구글링을 했다. 원인을 보니 다행히 큰 오류는 아니고 multer-s3와 aws-sdk 모듈의 호환성이 맞지 않아서 생기는 오류라고 한다. package.json 파일을 살펴보니 multer-s3는 3.xx버전이고, aws-sdk는 2.xx버전이었다. multer-s3를 다운그레이드..

coding/Error 2022.09.11

로그 남기기 2 - morgan 사용

로그를 남기기 위해 winston 사용 방법에 대해 정리한 이전 게시글을 보고 보는 것을 추천한다. https://jin-coder.tistory.com/140 winston은 배포 환경에서 로그 기록 파일에 저장하는 기능을 주로 하고, morgan은 개발이나 배포 환경에서 콘솔 로그 대신 자동으로 로그들을 보여줄 수 있게 한다. 그러기 때문에 morgan을 사용한 미들웨어를 통해 자동으로 로그를 만들고, winston을 이용해 그 로그를 파일에 기록하여 사용한다. 1. morgan 설치 npm install morgan 2. morgan 코드 작성 winston과 같은 위치인 ./config/morganMiddleware.js에 코드를 작성한다. morgan은 미들웨어로 만들어 사용할 것이다. wins..

coding/Node.js 2022.09.10