Boilerplate
: 재사용 가능한 코드 // boilerplate 구현 예정
ex) 로그인 기능 등 자주 쓰이는 기능 재사용 가능하게 만들어 놓는 것
1) node.js & express.js
node.js
JS를 브라우저가 아닌 서버사이드에서 사용할 수 있게 한 것
express.js
node.js이용해서 자동차를 만드는 것이 express.js
node.js 쉽게 해주는 프레임워크
node.js
node -v // node.js 다운 확인 npm init -y index.js // 폴더 생성
express.js
npm install express --save
index.js에서 express.js 앱 만들기
express 홈페이지
const express = require('express') // express 모듈 가져옴 const app = express() // express 앱 만들기 const port = 3000 // 포트 번호 (아무거나) app.get('/', (req, res) => { // 루트 디렉토리 오면 hello~ 출력 res.send('Hello World!') }) app.listen(port, () => { // 3000번에서 앱 실행 console.log(`Example app listening on port ${port}`) })
package.json > scripts
"start" : "node index.js" "test" : "echo \"Error:no test specified\" && exit 1"
터미널
npm run start 브라우저 : http://localhost:3000/ 종료 : ctrl + c
2) mongoDB
express.js로 만든 앱에 mongoDB 연결
a) mongoDB 로그인 (회원가입)
b) create cluster - for free
c) asia에서 선택
d) M0 선택
e) cluster name 설정
f) quickstart에서 ID와 current IP 설정
g) deployment - database - connect - connect your application - 복사 - index.js에 연결
mongodb+srv://xxxxxxx:<password>@first.2owuq.mongodb.net/myFirstDatabase?retryWrites=true&w=majority
3) mongoose
mongoose 설치
npm install mongoose --save
mongoose를 이용해서 mongodb 연결하기
const mongoose = require('mongoose') mongoose.connect('mongodb+srv://아이디:비밀번호입력@first.2owuq.mongodb.net/myFirstDatabase?retryWrites=true&w=majority') .then(() => console.log('MongoDB Connected')) .catch(err => console.log(err))
모델
: 스키마 감싸주는 역할
스키마
: 데이터베이스 관계 보여주는 표
1) 생성
폴더 생성 (models)
models 폴더 안에 파일 생성 (User.js)
User.js
const mongoose = require('mongoose'); // mongoose 연결 const userSchema = mongoose.Schema( { // 스키마 세팅 name: { type: String, maxlength: 50 }, email: { type: String, trim: true, // 공백 제거 unique: 1 // email 중복 안됨 }, password: { type: String, minlength: 5 }, lastname: { type: String, maxlength: 50 }, role: { //가입자(디폴트, 0), 관리자 type: Number, default: 0 }, image: String, token: { // 토큰 설정 (나중에 유효성 관리 가능) type: String }, tokenExp: { // 토큰 유효기간 type: Number } }) const User = mongoose.model('User', userSchema) // 모델로 감싸주고 module.exports = { User } // export