Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8883

express-sessionをMongodbで。

$
0
0

初めに

今回の記事は対して裏取りをしておりませんので憶測で物をいうことが多いと思います。気になりすぎて夜も眠れネェヨクソが!という方は"フッザケンじゃねぇよ!"を接頭辞にコメントを寄せてもらえればと思います。

connect-mongo

バージョンがアップしたのかどうなのかこちらのモジュールを日本語の記事を参考に使おうと思えば使えませんでした。というわけで、公式のページを参考にちょこっとだけ覚書していきます。解説はしません。というかできません。(まだべんきょうちゅー)

node.js
varsession=require('express-session');varMongoStore=require('connect-mongo')(session);⇓⇓⇓varsession=require('express-session');varMongoStore=require('connect-mongo');

上のようにしてrequireしてみようとすれば、

TypeError: Class constructor MongoStore cannot be invoked without 'new' at Object.<anonymous>

というエラーが出てきて、よくわからなかったので公式のページを見てみれば下の様に完結of完結に書いてありました。・・・よくわかんないけど、まぁ、いっか!バージョン違いとか多分そんなんでしょ。

node.js
varoptions={db:'example',host:'localhost',port:27017,...etc...clear_interval:60*60}⇓⇓⇓varoptions={mongoUrl:'mongodb://username:password@localhost:27017/database',autoRemove:'native'};

optionsと分けるか分けないかは個人の自由ですけれど、自分は分けたい派の人間ですので分けました。
このoptionsもhostとかdbとかportとかあった・・・のかな?あったみたいですが、mongoUrlと簡潔になりましたね。mongodbモジュールでアクセスするときと全く同じURLでいけるようです。

node.js
app.use(session({secret:'foo',store:newMongoStore(options)}));⇓⇓⇓app.use(session({secret:'foo',store:MongoStore.create(options)}));

sessionの中身です。new MongoStore(options)で出来たようですが、自分がやってみれば出来なかったですので、公式のページをみたところ、MongoStore.create(options)でできるようです。ほんといろいろと変わったんですね。できることなら変えないでほしかったんですけど。(楽々参考にできるドキュメントがなくなるから)

最後

というわけで、ほんとに最低限ですけど、この設定でエラーは起きませんでした。その代わり警告は出ますけどね。しかし優秀なプログラマーのあなた方であれば、警告の一つや二つは解決することなんて簡単でしょう!
というわけで終わりです。
困った人の助けに少しでもなればよかったのですが。


Viewing all articles
Browse latest Browse all 8883

Trending Articles