2015년에 자바스크립트 문법에 매우 큰 변화가 있었음. => ES2015(ES6) 🔍const, let 보통 var로 변수를 선언하는 방법부터 배우지만 이제부터 var은 const, let이 대체함. if(true){ var x = 3; } console.log(x);//3 if(true){ const y = 3; } console.log(y);//error x는 정상적으로 출력, y는 에러가 발생하는 이유는 var은 함수 스코프를 가지므로 if문의 블록에 영향을 받지 않는다. 하지만 const와 let은 블록 스코프를 가지므로 블록 밖에서는 변수에 접근할 수 없다. (블록의 범위는 if, while, for 등에서 볼 수 있는 중괄호임.) const는 한 번 값을 할당하면 다른 값을 할당할 수 없고 ..
Node.js 개발 환경 설정하기 내 컴퓨터에는 이미 Node가 설치되어 있었는데 공부할 겸 삭제하고 다시 설치해 보았다. 1. 홈페이지 접속 후 왼쪽 LTS로 설치해 준다. 2. 쭉쭉..동의하고...Next... 3. 설치가 끝나면 요런 창이 나오는데 아무키나 눌러준다. 4. 그럼 파워쉘 창으로 넘어간다. 아니 이거밖에 안 했는데 벌써 에러가 난다고.....? 내 컴퓨터에 chocolatey 뭐시기가 이미 설치되어 있어서..그런 듯하다.... 책에 설명을 보니까 🔍초콜리티 윈도우 명령 프롬포트를 통해 노드를 설치하고 싶을 때 초콜리티를 고려해볼 수 있음. 노드 외의 다른 프로그램도 명령 프롬포트를 통해 설치할 수 있어 편리함. choco install nodejs 명령어를 사용하면 됨. 라고 하는데....
노드 핵심 개념 이해하기 -Node.js는 Chrome V8 Javascript 엔진으로 빌드된 Javascript 런타임이다. 🔍서버와 런타임 서버 노드는 다양한 자바스크립트 애플리케이션 중 서버 애플리케이션 실행 시 제일 많이 사용함. 서버는 네트워크를 통해 클라이언트에 정보나 서비스를 제공하는 컴퓨터 or 프로그램을 말함. 클라이언트 : 브라우저, 데스크톱 프로그램, 모바일 앱... 자바스크립트 런타임 런타임은 특정 언어로 만든 프로그램들을 실행할 수 있는 환경을 말한다. 노드는 자바스크립트 런타임 -> 노드는 자바스크립트 프로그램을 컴퓨터에서 실행 가능 -> 쉽게 말해 노드는 자바스크립트 실행기라고 볼 수 있음. (기존에는 자바스크립트 프로그램을 웹 브라우저 위에서만 실행 가능했다.) 🔍이벤트 기..
🤍Auth 기능의 필요성 홈페이지에는 로그인이 필요한 기능이 있고 필요하지 않은 기능이 있다. 페이지 이동 혹은 게시판 글을 쓰거나 지울 때 로그인이 되어 있는지, 관리자인지 or 유저인지 등을 체크하기 위해 필요하다. 지난번 로그인 시 생성한 토큰을 서버에서는 DB에, 클라이언트는 Cookie에 토큰을 넣어두었다. 먼저 클라이언트에서 쿠키에 담겨있는 토큰을 서버에 전달한다. ㄴ 이 토큰은 인코드 되어있으므로 디코드시킨 다음 USER ID로 보낸다. 해당 USER ID 토큰이 DB에 있을 경우 인증 완료. 없을 경우 글쓰기 권한을 부여하지 않음. 1. Auth 라우트 만들기 2. 미들웨어 auth.js 만들기 인증처리를 하는 곳 클라이언트 쿠키에서 토큰을 가져온다. 토큰을 복호화한 다음 유저를 찾는다. ..
지난번에 만든 회원가입에서는 데이터베이스에 비밀번호가 그대로 저장됐다. 이번에는 DB에 비밀번호를 더 안전하게 저장하기 위해 bscrypt 를 이용해 비밀번호를 암호화한 다음 DB에 저장해 보도록 한다. 🤍비밀번호 암호화하여 DB 저장하기 1. bscrypt 설치 npm install bscrypt --save 2. npm 사이트 참고하여 User.js에 코드 작성 user 모델을 저장하기 전에 암호화를 하겠다. 그런데 매번 암호화를 하는 것은 번거로우므로, 비밀번호 변경 시에만 암호화되고 email 변경 시에는 비밀번호 암호화가 반복되지 않도록 조건을 걸어준다. next라는 파라미터를 넣어주고 next 호출 사용자의 비밀번호가 변경되었을 때에만 salt를 생성시켜준다는 문법의 genSalt 사용하여 에..
🤍Body-parser란? node.js의 Post 요청 데이터를 추출할 수 있도록 만들어주는 미들웨어. body-parser를 사용하게 되면 req에 body 프로퍼티를 사용할 수 있다. vscode 터미널에 아래 명렁어를 입력하고 설치해 준다. npm install body-parser --save 🤍회원가입 만들기 1. 지난번에 만들어둔 User 스키마를 가져와서 회원가입에 활용한다. 2. 데이터를 json 형태로 send할 것이고, 회원가입 성공하면 success:true 라고 출력. 3. Postman을 다운받는다. 4. 아래 화면에서 GET이 아닌 POST로 변경한다. 5. raw, json으로 선택하고 회원가입에 필요한 정보를 입력한다. 6. User 스키마에 필수값을 주지 않았기 때문에 모..
🤍Mongoose에서 Schema, Model이란? 오라클, mysql과 달리 MongoDB에는 테이블이 없다고 한다. Schema는 이로 인한 헷갈림을 방지하기 위해 도입되었다. 사용자가 작성한 Schema를 기준으로 데이터를 DB에 넣기 전에 먼저 검사하고 어긋나는 데이터가 있으면 에러를 발생시킨다. 스키마를 설정할 때 인덱스도 걸어둘 수 있고 기본값도 설정할 수 있다. 즉, 스키마=테이블과 어느 정도 비슷한 역할을 한다. Model은 Schema를 감싸주는 역할을 한다. MongoDB는 고정적인 스키마를 갖고 있지 않지만, 이번 3강에서는 데이터베이스 서버가 아니라 우리의 웹서버가 데이터베이스에 들어있는 문서들을 객체화하여 사용할 수 있는 스키마를 설정해 봅니다. 🤍스키마 스키마는 해당 컬렉션의 문..
이번 2강에서는 저번에 만든 앱에 MongoDB를 연결하는 실습을 진행했습니다. 🤍MongoDB Cluster 생성 1.MongoDB 홈페이지에 접속 2. 회원가입을 해줍니다. 3. Free로 선택해 줍니다. 4. aws, 가장 가까운 도시(필리핀)으로 선택하고 create해주면 끝. 5. Connect your application 선택 6. application code를 복사해 옵니다. 🤍monoose 설치 & MongoDB 연결 npm install monoose --save 명령어를 입력해 주면 package.json dependencies에 "monoose"가 추가된다는데... 나는 아래와 같이 뜨고 ㅠㅠ추가가 되지 않는다...그래서 설치가 된 건지 안 된 건지 모르겠다... 2시간 째 삽질 ..