2013/04/13

[node][express][mongoose] モデルのファイル分割

node,expressなWebアプリケーション開発の話です。
mongooseを使ったモデルをうまくファイル分割して配置したい、と思ってやってみました。
(うまいかどうか、正直自信はありません。)

expressで作ったアプリケーションディレクトリは、
  • app.js
  • package.json
  • node_modules
  • public
  • routes
  • views
のように、2つのファイルと、4つのディレクトリで構成されます。
この構成に対して、
db.js
mongodbへのコネクション処理を実装
models
mongodbのcollectionに対応したスキーマ定義ファイルを配置するディレクトリ
を追加しました。

実装は次のようにしました。

db.js

var mongoose = require('mongoose');
mongoose.connect('mongodb://hostname:port/dbname');

models/somemodel.js
var mongoose = require('mongoose');
var Schema   = mongoose.Schema;

var SomeModel = new Schema({
  attr1: SomeType,
  attr2: SomeType,
  :
});

// 以下、モデルのロジックの実装。
これで、モデルごとにファイルを分割し、models配下に格納していくことができます。
最後に、app.jsでdb.jsををrequireします。
// :
require('./db');
// :
また、モデル単位のファイルは、必要な場所でそれぞれrequireします。