Name Last Update
..
bin Loading commit data...
bower_components Loading commit data...
models Loading commit data...
public Loading commit data...
routes Loading commit data...
scss Loading commit data...
views Loading commit data...
.gitignore Loading commit data...
.jshintrc Loading commit data...
README.md Loading commit data...
app.js Loading commit data...
bower.json Loading commit data...
gulpfile.js Loading commit data...
mongodbtest.sh Loading commit data...
package.json Loading commit data...

App2: MongoDB, Mongoose를 이용하여 CRUD 처리

1. Mongoose 설치

# mongoose ORM 설치
npm install --save mongoose

2. MongoDB 접속

app.js에 다음 추가

var mongoose   = require('mongoose');
// 본인의 mongodb 접속 URL을 확인해서 id:pwd@server:port/dbname 의 형태로
// local의 경우 mongodb://localhost/dbname 형태
mongoose.connect('mongodb://user:asdasd@ds041394.mongolab.com:41394/nodewp');
mongoose.connection.on('error', console.log);

3. User 모델 추가

사용자를 저장할 document collection의 모델 models/User.js에 추가

4. users.js controller 구현

Route 함수에 맞게 User 모델을 이용하여 실제 controller logic 구현

5. 사용자 인증

  • req.session.user 객체가 있으면 로그인 된 것으로 간주
  • signout에서 delete req.session.user를 통해 user객체 삭제

6. Middleware를 이용하여 res.locals에 currentuser와 flashMessages 전달

app.use(function(req, res, next) {
  res.locals.currentUser = req.session.user;
  res.locals.flashMessages = req.flash();
  next();
});

7. 문제점

  • 비밀번호가 Database에 plain text로 저장된다. 사용자의 개인정보나 비밀번호는 암호화 해서 저장할 필요가 있음
  • 이 부분은 다음 시간에 더 나은 방법으로 새로 구현할 예정