티스토리 뷰

TIL

2020-06-17 Node.js & MongoDB

Hoon1994 2020. 6. 17. 23:39

요즘 결혼식 준비한다고 공부를 거의 못 했다.

오랜만에 유튜브 클론 강의를 다시 듣기 시작했다. 

 

거의 일주일을 보지 않았더니, MongoDB 명령어를 기억에서 삭제해버렸다. 

 

mongod로 mongo를 실행한 후, start mongo로 터미널을 먼저 열었는데, 

컬렉션을 조회하거나, 정보를 조회하는 명령어를 기억해내느라 애먹었다.

 

먼저 show dbs로 생성된 db 목록을 확인한 후, 

use "db 이름" 으로 이동했다. 

 

show collections로 생성한 collection을 확인하고, 

db.stats()로 현재 db의 정보를 확인하며 공부했던 기억을 떠올려갔다. 

 

오늘 사용한 명령어를 정리해보자면, 

 

DB 조회 = show dbs

해당 DB 이동 = use "db" 

Collections 조회 = show collections 

DB 상태 확인 = db.stats()

DB 데이터 전부 확인 = db."collection name".find({})

 

등을 사용했다. DB 명령어는 아직 익숙하지가 않다. 자주 사용을 하지 않아서 그런가... 

 

 

기억을 떠올려가며 오늘은 Session 정보를 mongoDB에 저장하는 로직을 구현했다. 

 

먼저, connect-mongo를 npm i connect-mongo 로 설치한 후 

app.js 에서 import 해준 후, 쿠키 스토어를 생성했다. 

 

import MongoStore from "connect-mongo";

const CokieStore = MongoStore(session);

 

MongoStore(session)으로 쿠키 스토어를 생성할 수 있다. 

 

그 후, app.use(session())에 스토어를 추가해준다. 

 

app.use(
  session({
    secret: process.env.COOKIE_SECRET,
    resave: true,
    saveUninitialized: false,
    store: new CokieStore({ mongooseConnection: mongoose.connection })
  })
);

 

생성한 쿠키 스토어에 mongoose.connection을 넣어줌으로 MongoDB와 연결을 한다. 

 

정상적으로 연결이 되었다면, db collections에 sessions로 컬렉션이 하나 추가된다. (로그인 시) 

 

mongoDB 연결 후에는, 로그인을 한 경우 & 로그인하지 않은 경우 특정 페이지에 접속하지 못하도록 하는 

미들웨어를 2개 추가해줬다.

 

export const onlyPublic = (req, res, next) => {
  if (req.user) {
    return res.redirect(routes.home);
  }
  return next();
};

export const onlyPrivate = (req, res, next) => {
  if (req.user) {
    return next();
  }
  return res.redirect(routes.home);
};

globalRouter.get(routes.join, onlyPublic, getJoin);
globalRouter.get(routes.logout, onlyPrivate, logout);

 

이런식으로, join 페이지는 로그인하지 않은 유저만, logout 페이지는 로그인한 유저만 접근하도록 설정해줬다. 

'TIL' 카테고리의 다른 글

2020-06-19 TIL  (0) 2020.06.19
2020-06-18 TIL  (0) 2020.06.18
2020-06-09 TDD  (0) 2020.06.09
2020-06-04 TDD & NodeJs  (0) 2020.06.04
2020-06-03 TDD Refactoring & Passport  (0) 2020.06.03
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함