일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- nginx
- MYSQL
- AWS
- Joi
- reduce
- ubuntu
- wil
- 노마드코더
- https
- it
- JavaScript
- elb
- 조건문
- 메소드
- JWT
- Node.js
- Nodejs
- 타입스크립트
- TypeScript
- 프로그래머스
- mongodb
- 자바스크립트
- npm
- nomadcoder
- Load Balancer
- java
- 항해99
- CORS
- mongoose
- 생활코딩
- Today
- Total
목록전체 글 (77)
V-logue

Multer - S3로 다중 파일을 업로드 하던 중 다음의 에러가 발생했다. MulterError: Unexpected field 에측하지 못한 필드가 발생했다는 건데, form-data를 보낼 때 사용된 html input의 name값과 router.post에서 받고 있는 name값이 달라서 발생했다. 사진으로 보여주자면, Thunder request를 통해 보내고 있는 formdata의 input name값과 현재 field로 정의된 upload.fields의 name값이 일치하지 않아서 발생한 것이다. posterUrl인데 postUrl로 사용하고 있었다.

Node와 FE에서 사용자가 이미지를 올리는 방법은 여러가지가 있는데, 개인 서버에 static 폴더를 만들어서 클라이언트로부터 요청받은 파일을 저장하는 방법과 db에 저장하는 방법이 있고, 마지막으로 AWS S3 버킷을 이용해서 이미지 파일을 저장하고 db에 버킷의 경로를 받아서 서버가 이 경로로 클라이언트에 응답하는 방법이 있다. 찾아보니, axios로 form태그를 사용해 이미지를 넘기려면 multer를 사용해야 한다고 하니 어처피 나는 이 multer에 대해서 배웠어야 했다. 이 AWS S3를 사용하면 개인 서버에 저장하는 것에서 고려도는 PC 성능을 고려하지 않아도 되고, 또 이 S3 버킷이라는게 내가 사용하는 만큼 비용을 지불하는 것이기 때문에 비용적인 부담도 줄어들어 아주 효율적인 서버를 구..
이번주는 성공적으로 과제를 원래 제출하는 시간보다 빨리 제출했다... 어떻게 보면 데드라인을 지켰다는게 상당히 의미가 있다. Class를 활용해서 TEST Code를 Jest로 검증해보는 과정이었는데, 솔직히 말해서 뭔가 Class에 대해서 공부하면서 배운 상속과 같은 개념들을 정확히 이해하고 사용했다고는 생각이 들지 않는다. 일단 나는 class의 상속을 다음과 같이 생각했다. 일반 함수가 new 연산자와 호출 시 생성자 함수로써 동작을 시작한다. var Es5 = function(name){ this.name = name; }; Class는 동일한 항목들(properties)과 동일한 함수를 가지고 있는, 객체를 생성하기 위해 사용된다. {name : “john”, age:19}와 같은 형태를 가진 ..
Joi joi는 JavaScript에서 가장 강력한 Schema를 설명하는 언어 및 데이터 유효성(validation) 검사기이다. 설치는 다음과 같이 시작한다 npm install joi 사용법은 간단하다. 먼저, 조이를 require를 통해 불러와주고 const joi = require("joi") 유효성을 검증할 Schema와 검증을 시도할 body를 구성한다. const UserSchema = joi.object.key({ userId: joi.string().min(4).max(20).required(), password: joi.string().min(8).max(20).required(), email: joi.string().email().required() }) const user = { ..

Bcrpyt, bcrypt.hashpw(password, bcrypt.gensalt()) bcrpyt는 암호를 해시화 하는데, 도움이되는 라이브러리다. 1999년 USENIX에서 발표된 ..... 암호 해싱 기능이다. 비밀번호 해싱(Password hashing)이란? 유저가 클라이언트에서 입력한 정보가 db에 저장되는데, 비밀번호와 같은 정보는 아주 민감하고 안전하게 다뤄줘야 한다. 만약 유저가 1q2w3e4r이라는 Plain Text를 입력하고, 이대로 Plain Text가 db에 저장된다면 서버 관리자가 알 수 있음은 물론이고 해커마저도 쉽게 알아낼 수 있을 것이다. 바로 이럴때에, 필요한 것이 해싱인데 해싱은 위의 Plain Text를 특정적인 해시화하는 무언가를 사용해 잘게 쪼개고 어렵게 인간이..

https://surprisecomputer.tistory.com/32 [Node.js] express cors 사용하기 1. 서론 리버스 프록시 서버로 NGINX를 두고 한 워크스테이션에서 Swagger와 node.js 서버를 함께 구동한 적이 있다. Swagger의 포트를 8085로 지정하고 node.js 서버는 443번으로 지정했는 데, CORS 에러가 발 surprisecomputer.tistory.com CORS(Cross-Origin Resource Sharing)란 자신이 속하지 않은 다른 도메인, 다른 프로토콜, 혹은 다른 포트에 있는 리소스를 요청하는 cross-origin HTTP 요청 방식이다. cross-origin HTTP 요청 방식에 대해서는 mozilla 사이트의 다음의 그림을..

https://levelup.gitconnected.com/better-logs-for-expressjs-using-winston-and-morgan-with-typescript-1c31c1ab9342 Better logs for ExpressJS using Winston and Morgan with Typescript A step-by-step guide on how to configure an ExpressJS application with Winston and Morgan loggers using Typescript levelup.gitconnected.com 참고한 글 원본 A great log system is one of the easiest ways to check your applicati..
저번주에 미처 배포에 실패했던 과제지만, 이번 주차에는 과제 배포에는 성공했다. 물론 모든 기능 구현에는 실패했는데....................... 분명히 댓글 수정버튼을 만들고 수정했을 때 success가 뜨길래 나는 수정이 됐다고 생각했는데, 어제 코드를 분석할 겸 확인해보니 댓글 수정이 안되고 success만 뜨는 모습을 확인했다. 무척 안습한상황.. 주말 동안 수정버튼을 고치는데 몰두했다. 이번 주차에는 ORM 프레임워크인 Sequelize를 사용하여 my SQL을 사용했다. sequelize는 my sql을 쉽게 사용할 수 있도록 지원하는 라이브러리로 ORM으로 분류된다. ORM이란 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해주는 것을 말한다. 객체 지향 프로그래밍은 클..