Node.jsで実践的なWebアプリ開発をやったメモ
ライブラリのドキュメントとリポジトリ
-
express : Node.jsのSinatra風Webアプリケーションフレームワーク
-
passport : Expressのための認証フレームワーク
- よくある認証のパターンがStorategyとしてまとめられて提供されていて数行でログイン処理が書ける
- http://passportjs.org/
- http://passportjs.org/guide/
- https://github.com/jaredhanson/passport
-
mongoose : Node.jsのMongoDBモデリングツール、ODM
- MongoDBのスキーマ定義したりモデルオブジェクトを作ったりして操作できる
- http://mongoosejs.com/
- http://mongoosejs.com/docs/guide.html
- http://mongoosejs.com/docs/index.html
- http://mongoosejs.com/docs/api.html
- https://github.com/LearnBoost/mongoose
-
kue : Node.jsの非同期ジョブキューフレームワーク
- 非常にシンプルな、ジョブキューサーバーのためのフレームワーク
- ジョブの管理にredisを利用している
- http://learnboost.github.io/kue/
- https://github.com/learnboost/kue
組み合わせてできること
- passportとpassport-twitterでTwitter OAuth認証して、mongooseでUserモデルと連動させてトークンなどを保存、取り出し
- mongooseから特定の条件でUserモデルを取り出してkueでジョブを登録して実行させる
- 自動ツイートなどをジョブキューで実装
引っかかった点
-
passportのログイン時処理をmongooseのモデル内に書きたい
- → staticメソッドとして定義してログイン時の引数をそのまま受け取るように実装すれば書ける、動く
-
mongooseのモデルをAPI経由でjsonで出力するときに、表に出したくないフィールドがある
- → schema.set("toJSON", {transform: function(doc, ret, options){...} }) でjsonにするときの処理を定義できる
-
mongooseでpaginationをやりたい
- → require "mongoose-pagination"
-
kueを扱うスクリプトでmongoose使う方法
- require '../models/user'とかやって問題なく動く
- modelの依存を少なくしておかないと外から呼ぶ時面倒になる可能性はある
- 終了処理だけmongoose.connection.close()を呼ぶように気を付ける必要がある