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 }));
でいいみたい.
このような感じに入ってる.
以上, 備考録.
参考
参考[1] Node.js+Express+MongoDBでSessionを利用してログイン機能を実装 - Qiita
大変, 参考になりました.