Today I Learned
-
mongoose middleware 제작Today I Learned 2020. 1. 8. 17:16
문제 다른 document의 내용을 manual reference 통해 참조하는 방법을 채택하고 프로젝트를 진행했다. 그러나, 어떤 document가 삭제되었을 때, 이것을 참조하는 document에서는 cascade 하게 삭제되지 않는 문제가 발생했다. 해결 stackoverflow에서 비슷한 사례들을 찾아본 결과, 자체적으로 연쇄적으로 지워주는 기능을 수행하는 미들웨어를 제작하는 방법으로 해결했다. 그래서 model 폴더에 존재하는 각각의 파일들에 미들웨어를 제작해 사용했다. model/Comment.js 위의 코드는 getQuery를 통해 함수의 입력 파라미터를 받고, 두 번의 query를 이용해 User, board document에 필요없는 _id 값을 삭제하는 기능을 수행하는 미들웨어이다. 출..
-
AWS region에 따른 속도 차이Today I Learned 2020. 1. 3. 10:47
문제 REST API 서버 구현을 완료하고 postman을 통해 request 한 결과, 2초 정도 소요되는 문제가 발생했다. DB 역정규화를 거쳐 JOIN과 Query의 개수를 최소화 해보았지만 효과는 미미했다. 해결 AWS EC2, RDS의 region이 오하이오 주에 있다는 것을 파악하고, 서울 지역으로 바꿀 경우 속도가 빨라질 것인가에 대한 조사를 시작했다. http://awsspeedtest.xvf.dk AWS Speed Test awsspeedtest.xvf.dk 위 웹 사이트에서 현재 PC에서 latency가 가장 적은 region를 확인할 수 있었다. 또한, EC2와 S3의 region이 다를 경우에 속도가 느려질 수 있다는 article을 읽었다. https://blog.overops.c..
-
MYSQL JOIN문Today I Learned 2019. 12. 27. 14:22
JOIN이란? 테이블들이 서로 연관을 맺고 이들로부터 특정 조건의 레코드셋들을 선별하게 되는데, 이를 테이블 조인이라 한다. Inner Join 복수 테이블들이 조인 조건을 모두 만족하는 레코드들만 선별하는 조인이다. 교집합이라고 생각할 수 있다. SELCET * FROM "TableA" INNER JOIN "TableB" ON "TableA.Col" = "TableB.Col" Left Join Left table을 포함한 교집합 구문이다. TableA의 내용은 그대로 있고, TableB와 겹치는 부분이 있는 내용을 추출하는 것이다. SELCET * FROM "TableA" LEFT JOIN "TableB" ON "TableA.Col" = "TableB.Col"
-
.gitignore 재설정Today I Learned 2019. 12. 26. 16:59
문제 git 으로 관리하지 않을 디렉토리들이 이미 포함되어 버린 경우 나중에 .gitignore 에 추가하여도 이미 해당 파일은 track 하는 상태에게 제거되지 않는다. 해결 이를 해결하기 위해서 일단 .gitignore를 만든 후, 아래의 절차에 따라 tracking 을 다 삭제하고 새로 재설정한다. 출처 http://wincloud.link/plugins/servlet/mobile?contentId=38961166#content/view/38961166 컨플루언스 모바일 - Confluence.winCloud.Link wincloud.link
-
Node.js를 이용한 회원가입 기능 구현Today I Learned 2019. 12. 25. 23:03
Packages crypto-promise crypto 모듈의 promise 버전이다. multer multipart/form-data를 다루기 위한 미들웨어이다. 본 프로젝트에서는 amazon-s3를 이용해 프로필 사진을 저장한다. jwt JSON Web Token (JWT) 은 웹표준으로서 두 개체에서 JSON 객체를 사용하여 가볍고 자가수용적인 (self-contained) 방식으로 정보를 안전성 있게 전달해줍니다. 본 프로젝트에서는 회원 인증 용도로 사용하였다. 타당한 사용자인지 검사하고, token 안에 유저 정보들을 활용해 앱을 동작한다. Logic /model/user.js 위의 코드는 amazon RDS를 이용해 mysql을 사용한다. 크게 signup, checkUser 기능이 있다. s..