[Node.js] Express.js에서 Multer로 S3에 이미지를 여러장 업로드하는 방법
·
Programming/Node.js
express사용 환경에서 multer를 사용해서 S3에 이미지를 저장해야 하는 상황이 생겼다. 이 글에서는 이미지를 받아서 서버 폴더에 저장하는 방법에 대해 서술한다. 환경 express: 4.x multer: 1.4.5-lts 필요한 패키지 설치 multer를 설치한다. npm i multer typescript 환경인 경우 타입 추가로 설치한다. npm i @types/multer aws-sdk를 설치한다. npm i aws-sdk 라우터 생성 이미지를 받기위한 라우터를 생성한다. 전체 코드는 아래와 같다. const upload = multer({ dest: path.join(__dirname, 'uploads/') }); app.get('/test',upload.array('images', 5)..
[Typescript] typescript에서 express의 request를 확장해서 사용하는 방법
·
Programming/Typescript
express + typescript 환경 사용중에 express의 requset에 임의의 객체를 추가해야 하는 상황이 생겼다. request 객체를 확장해서 객체를 추가하고 타입도 추론되게 만들어보자. 환경 typescript: 4.4.3 express: 4.x Request 확장 typescript 환경에서 Express 사용시 Request는 아래와 같은 방식으로 확장할 수 있다. request 객체 안에서 사용될 객체를 아래 문법을 사용해서 app.ts 최상단에 선언한다. declare global { namespace Express { export interface Request { test?: string } } } 이제 Request안에서 test라는 커스텀 객체를 사용할 수 있다. 실제로 ..
[Typescript] Typescript에서 class가 다중상속을 지원하지 않는 이유 (다이아몬드 문제)
·
Programming/Typescript
만약 Typescript에서 class로 다중상속을 하려고 하면 에러가 발생한다. 예시를 통해서 확인해보자 아래와 같은 코드가 있다고 가정한다. class Test1 extends TestProblem { test() {} } class Test2 extends TestProblem { test() {} } // Error class Diamond extends Test1, Test2 {} 이렇게 2개 이상의 클래스를 상속받으려고 하면 에러가 난다. 다이아몬드 문제 왜 Typescript에서는 class의 다중상속을 막아두었을까? 조금 더 자세한 설명을 위해 다른 코드를 예시로 들어보자. class TestProblem { test(logString: string = 'TestProblem') { con..
[Typescript] typescript에서 type과 interface의 속성을 재정의하는 방법 (typescript Overriding)
·
Programming/Typescript
이 글에서는 typescript 환경에서 type또는 interface를 그대로 가져오며 타입 재정의가 필요한 속성을 재정의 하는 방법을 다룬다. type의 경우 예를 들어 아래와 같은 Test1 타입이 있다고 가정한다. type Test1 = { test1: string, test2: string, test3: number, }; const test1: Test1 = {test1: 'test1', test2: 'test2', test3: 3}; 이 때 Test1의 속성인 test3를 string 바꾼 새로운 타입이 필요하다고 가정한다. 그럴 때 아래와 같은 코드를 적용하면 된다. type Test2 = Omit & { test3: string }; const test2: Test2 = {test1: '..
얼은펭귄