본문 바로가기

항해99_10기

(109)
[TIL] [5주차] [20221209] object literal에서 spread operator Spread Operator Spread syntax (...) - JavaScript | MDN The spread (...) syntax allows an iterable, such as an array or string, to be expanded in places where zero or more arguments (for function calls) or elements (for array literals) are expected. In an object literal, the spread syntax enumerates the propert developer.mozilla.org In an object literal, the spread syntax enumerates the propertie..
[TIL] [4주차] [20221208] 4주차 회고 - 코드리뷰와 리팩토링 / package.json, EC2 set locale, express sanitizer 오늘은 4주차 마지막 날로, 주차 시험을 치뤘다. 끝나고 나니까 그렇게 어려운 문제는 아니었는데, 에러 메세지에 낚여서 SQL row query 문법을 찾느라 시간을 많이 버렸다. 그래도 시간 내에 잘 풀었다. 오후에는 조별과제 포스팅을 했고, 저녁부터 어제 기술 매니저님께 받은 리뷰 대로 코드를 수정했다. 아래는 코드리뷰를 받은 내용이다. app.js에서 router 불러 오는 것은 ./routes/index.js만 index에서 나머지 라우터를 계층 순서에 맞게 라우팅 해주기 app -> index -> user / posts / comments 순으로 계층구조 정리할 것 app.js에서 최종 error handdling 미들웨어 추가 보통 파일 이름은 단어 하나로 사용 authAndUser -> a..
[4주차] [20221208] node.js의 require() 작동 방식 Node.js에서 리팩토링시 사용하며, npm을 통해 다운로드 했던 모듈을 불러오는 require 함수는 어떻게 동작하나요? IIFE (Immediately Invoked Function Expression)와 연결지어 찾아보고 정리해보세요 Node.js에서 require 함수는 모듈을 불러오는 node.js의 내장 함수인데, require()를 호출하면, 즉시실행(Immediately Invoked)하여 모듈 파일인 JS 파일을 읽고, 실행시키고, 반환한다. 아래와 같은 example.js 파일이 있다 console.log("evaluating example.js"); const invisible = function () { console.log("invisible"); } exports.message..
[4주차] [20221207] express에서 Router : Middleware와 Router Q. express.js의 라우터는 미들웨어입니다. 어떤 원리로 동작하기 때문에 미들웨어로 라우터를 구현할 수 있나요? 오늘은 질문에 답하기 위해, 미들웨어란 무엇인지와 함께 express에서 Router를 알아보려고 한다. Using Middleware Express 공식 홈페이지에서는 라우팅과 미들웨어 웹 프레임워크라고 express를 소개하고 있는데, express는 기본적으로 미들웨어 함수의 연속적인 호출을 처리하는 프레임워크다. Middleware function은 어플리케이션의 request-response cycle에서 request object, response object, next middleware 함수에에 대한 액세스를 가진 함수를 가리키며, 아래의 네가지 기능을 수행할 수 있다. ..
[4주차] [20221206] thunder client에서 req.cookies 넘기기 오늘은 게시판 CRUD 과제에서, 회원 로그인 및 인증 api를 access/refresh token을 이용하여 인증 middleware를 업그레이드 했다. api를 모두 짜고, thunder client에서 테스트를 하고 싶었는데, 도무지 req.cookies 값을 넣어주는 방법을 찾지를 못했다. 사용자가 로그인을 하면 서버에서는 accessToken과 refreshToken을 발급해서 res.cookie로 클라에 넘겨준다. 쿠키로 토큰 값을 전달 받은 클라는 사용자가 인증이 필요한 서비스를 사용할때마다 저장해서 가지고 있던 토큰이 담기 쿠키를 req.cookies로 서버에 날린다. 서버에서는 cookie-parser 미들웨어를 사용해서 req.cookies에 담긴 토큰 값을 가져온다. 프론트 없이 서..
[4주차] [20221205] Joi validation & Sequelize를 이용한 mySQL 설정 오늘은 기존에 빌드한 게시판 db를 mySQL로 바꾸고, 회원가입 및 로그인 인증 기능을 추가하기 위한 기초 작업을 진행했다. 지난 주차에서는, request.body를 검증하기 위해서, 별도의 함수를 만들어 처리해 주었는데, 이번 주차부터는 Joi를 사용하여 검증을 더 쉽게 구성할 수 있게 되었다. Joi를 사용하여 데이터 검증하기 The most powerful schema description language and data validator for JavaScript. - npm Joi JavaScript를 위한 가장 강력한 schema description language이자, data validator라고 설명하고 있다. Joi에서는 데이터 검증을 위한 강력한 함수들을 제공하고 있는데, api..
[3주차 WIL] 2022.11.28 ~ 2022.12.03 회고 3주차가 또 끝이 났다. 11.28(월) ~ 12.1(목) 동안은 Node.js 입문주차 개인 프로젝트와 팀 과제를 수행했다. 노드 입문주차동안은, 노드 환경에서 express 프레임워크를 사용하여 기본적은 CRUD를 구현하였다. 개인 과제 - 게시판 포스팅/댓글 CRUD request.body에 대한 검증 처리를 모든 api에 반복해서 적지 않기 위해, 전역에 검증 함수를 하나 만들어 처리해 주었다. error의 경우도, 지정된 error 메세지와 status 번호를 내보내기 위해, customError class를 만들고, constructor 함수에 매번 필요한 http status 번호와 에러 메세지를 받아서 출력할 수 있도록 처리해주었다. GitHub - jn33-dev/hanghae-week3..
[4주차][20221203] node.js에서 mySQL을 사용하기 위해 알아야 하는 것들 : Sequelize, Migration, Model 오늘은 mySQL을 node.js 환경에서 사용하는 방법을 배웠다. 솔직히 세션 중간에 졸았는데.. 이해가 하나도 안됐다..ㅠㅠ 일단, mongodb는 순한맛이었다. mySQL을 사용하기 위해서는 모델(스키마)만 있어서는 안되고, 마이그레이션이라는 것을 통해서 db를 설정해 준다음에 모델을 업데이트 하여 사용해야 했다. (일단 여기서부터 이해가 안가서..ㅋㅋ) 마이그레이션, 모델, 시퀄라이즈... 이름부터 무시무시해서.. 네 놈들의 정체는 무엇이냐!! 하고 검색을 해봤다. 1. Sequelize Sequelize is a modern TypeScript and Node.js ORM for Oracle, Postgres, MySQL, MariaDB, SQLite and SQL Server, and more..