tkm_71のブログ

自分のための備考録みたいなものです。

Node.js で MongoDB を使ってみる

Node.jsでMongoDBを使ってみたので, 備考録.
セッションの保存先をMongoDBに変更もしてみます.

環境

  • node v5.0.0
  • MongoDB version v3.2.3

MongoDBを扱うためのモジュールをインストール

$ npm install mongoose
$ npm install connect-mongo

MongoDBの起動

mongodb/bin以下のmongodを起動する.

$ ./mongod --nojournal --noprealloc --dbpath PATH

※PATHはDBの保存先らしい

実装

まずはMongoDBを使ってみる.
modelの定義についてはNode.js+Express+MongoDBでSessionを利用してログイン機能を実装 - Qiitaから丸っとお借りしました.
モデルのスキーマは自分の使いたい形にちょっと変更.

model.js
var mongoose = require('mongoose');
var url = 'mongodb://localhost/session';

var db  = mongoose.createConnection(url, function(err, res){
    if(err){
        console.log('Error connected: ' + url + ' - ' + err);
    }else{
        console.log('Success connected: ' + url);
    }
});

// Modelの定義
var UserSchema = new mongoose.Schema({
  id : String,
  timestamp : Date
},{collection: 'info'});

exports.User = db.model('User', UserSchema);


あとはこのモデルを利用したいところで, 呼び出して使う.
例えば, app.jsで.

app.js
var model = require('./model.js'),
    User = model.User;

var newUser = new User({
     id : profile.id,
     timestamp : new Date().getTime()
});

newUser.save(function(err){
     if(err){
        console.log(err);
     }else{
        console.log ("Save OK!!");
     }
});

IDが12345のユーザを検索する場合は,

var query = {id:"12345"};
User.find(query, function(err, data){
    if(err){
	    console.log (err);
    }else{
    	console.log(data);
    }
}


次に, セッションストアとして利用する場合は,

app.js
var session = require('express-session');
var mongoose = require('mongoose');

//mongoDBに接続
mongoose.connect('mongodb://localhost:27017/session');
var sessionStore = new MongoStore({mongooseConnection: mongoose.connection});

app.use(session({
    secret: 'secret',
    cookie: {
        httpOnly: false,
        maxAge: new Date(Date.now() + 60 * 60 * 1000)
    },
    store: sessionStore
}));

でいいみたい.

f:id:tkm_71:20160222162205p:plain
このような感じに入ってる.

以上, 備考録.