2011-09-13 8 views

答えて

5
// route.js 
var mongoose = require("mongoose"); 

var Posts = mongoose.model("posts") 
... 

すべてのモデルファイルを実行するブートストラップメカニズムを設定するようにしてください。それが完了したら、一連のモデルに対してmongoose.model("name", Model)を呼び出す必要があります。

これは、これらのモデルを内部的にマングースにキャッシュしています。だからどこでも好きな場所にmongoose.model("name")と呼ぶことができます。

重要なのは実行順序だけです。モデル&は、ルートを実行する前に登録する必要があります。

これは同じくらい簡単通りである:あなたのサーバーを聞く前に、マングースが作成する通常readdirSyncは悪であるが、それは起動時間(のようなrequire)で呼び出しをブロックする実行するために大丈夫だ

// create app 
var app = express.createServer(...); 
// do stuff with app 

var files = fs.readdirSync("models"); 
files.forEach(function(file) { 
    require("models/" + file); 
}); 

var routes = fs.readdirSync("routes"); 
routes.forEach(function(route) { 
    require("routes/" + route)(app); 
}); 

app.listen(80); 

+1

これに 'Schema'はどのように適合しますか? – Shamoon

+0

'fs.readdirSync()'をうまく使います。 @Samoon、 'mongoose.model(" name "、Model)'の上のサンプルコードでは、ModelはSchemaのインスタンスでなければなりません。 –

1

シングルトンがrequire()の場合、それ以降の呼び出しは同じインスタンスを返します。

あなたのアプリが入ったときにマングースが必要な場合は、あなたのモデルを定義して、Raynosの説明どおりのマングースが必要な他のファイルで利用できます。

dbサーバーへの接続を手動で管理しない限り、mongoose.connect('...')をアプリのinitで呼び出すこともお勧めします。接続は要求を超えて存続します。

関連する問題