More Related Content
Similar to 20131012 nodejs
Similar to 20131012 nodejs (20)
20131012 nodejs
- 3. 前回のおさらい
• MongoDB は NoSQL のひとつ
• 他の KVS などと違いドキュメント指向
型
• これが上手い具合に RDB 脳にやさしい
→と思った?残念!さやk
それやると痛い目に遭う
- 4. 前回のおさらい
• Socket.IO は Node.js モジュールで
実装出来る WebSocket
• WebSocket に対応していないクソい
ブラウザでも Socket.IO が吸収
• 使い方によっては jQuery.Ajax の代わり
になる(けど全部置き換える必要はな
い?
- 10. 作ったもの
• Node.js + express.js + Socket.IO +
MongoDB で jQuery は使うけど
jQueryAjax を使わないで Socket.IO だけ
でリアルタイムに MongoDB へのデータ
入出力と HTML へのレンダリングが出
来るを昨日 2 時間くらいでサクッと作
ったアプリ
- 16. 構成
app.js ←Node.js サーバ/リクエスト/ Socket.IO
package.json
public/
└javascripts/
└client.js
routes/
└index.js
views/
├layout.jade
└index.jade
models/
└users.js
node_modueles/
- 23. やってること
• クライアントから index ページが呼び出される
クライアント側に jQuery と client.js と
socket.io.js が読み込まれる
• setDataUsers ボタンを押す
→ users にドキュメントを追加
• getDataUsers ボタンを押す
→ users からドキュメントを取得し、 HTML
形式に整形して jQuery によって HTML を書換
え
- 24. mongoose モデル
• mongoose には Schema と Model の機能がある
• Schema :コレクションがどうあるべきか定義
ドキュメント作成時に値の validate や
default 値、型チェックも可能
• Model :用意した Schema と MongoDB
コレクションを紐付けてモデル化
- 25. exports と require
• require() : Node モジュールをロード
自分で用意した js もロード可能
※さっきの model や lib など
• exports :外部に公開したい時に使用
• 例: models/users.js で
exports.Users = mongoose.model('Users', UserSchema); したもの
を、 app.js などで var Users = require('./models/users.js').Users すると、
app.js 内で Users.find() が使えるようになる
- 26. ちなみに
• Mongoose にも便利なプラグインが沢山
• 例えば、 mongoose-file(mongoose-thumbnail)
MongooseSchema に Plugin として set すること
で
save 時に画像ファイルのアップロードと
MongoDB のドキュメント内にバイナリ保存
→これ自前で作るとめんどくさい