
Mongooseを試してみましたが、mongoDBかなり扱いやすいです。
スキーマレスなドキュメント指向データベースはRDBMSのようなカラムをいちいち定義しなくていいので柔軟にデータベースが使えます。
ドキュメント指向データベースになれるとRDBMSはもう使えないかも・・。
1. mongoDBのインストール
前回の記事参照。
→ MongoDBインストール手順
2. mongooseのインストール
コマンド一発でOKです。
$ npm install mongoose
3. コードサンプル
// MongoDB // MongoDBサーバーの設定 var mongoose = require('mongoose'); var crypto = require('crypto'); // Schemaを取得 var Schema = mongoose.Schema; // ModelのSchema Class定義する var CommentsSchema = new Schema({ title: String, body: String, date: Date }); // ModelのSchema Class定義する var RoomSchema = new Schema({ title: String, password: String, body: String, date: Date, comments: [CommentsSchema], // 1対多を埋め込み型で定義できる metadata: { votes: Number, favs: Number } }); // middleware // save処理の前にフックをかけれる。RailsでいうFilterみたいな機能 RoomSchema.pre('save', function (next) { this.password = crypto.createHash('md5').update(this.password).digest("hex"); next(); }); // モデル化。model('モデル名', '定義したスキーマクラス') mongoose.model('Room', RoomSchema); // mongodb://[hostname]/[dbname] mongoose.connect('mongodb://localhost/chatroom'); // 定義したときの登録名で呼び出し var Room = mongoose.model('Room'); // インスタンス生成 var room = new Room(); // 各カラムにデータを入力 room.title = 'test title'; room.body = 'this is a pen'; // 埋め込み型カラムはpush()を使う room.comments.push( {title: 'comment title1', body: 'comment body1', password: 'your password'}); room.comments.push( {title: 'comment title2', body: 'comment body2', password: 'your password'}); // pre-hookを定義しているとsave時に定義した関数が走る room.save(function(err) { if(!err) console.log('saved!') }); // データの取得 Room.find({}, function(err, docs) { docs.forEach(function(doc){ console.log(doc); }); }); Room.findOne({}, function(err, doc) { console.log(doc); });
関連ページ
- node.jsを試してみる
- express+node.js+sequelizeを試してみる
- MongoDBインストール手順
- node.js+MongooseでMongoDBを試してみる
- express+node.js+redisでセッション管理
- express+node.jsのSocket.ioを使ってチャネル対応チャットを作成
関連サイト
mongoose – http://mongoosejs.com/
mongodb – http://www.mongodb.org