Node.js | React | MongoDB | Express (1)

Tony Kim·2022년 1월 31일
0
post-thumbnail

Node.js | React | MongoDB | Express (1)

1. 기본 설정 (개발 환경 setting)

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 홈페이지 getting started
  • hello world example > const express 부분 복사

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))

2. User model 생성

모델 : 스키마 감싸주는 역할
스키마 : 데이터베이스 관계 보여주는 표

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
profile
Back-end-dev

0개의 댓글