オプション1:共有オブジェクトを使用する
私のモデルコードは似ていますが、モジュールを繰り返し必要とするのではなく、アプリケーションの起動時に一度だけ必要とし、結果を共有オブジェクトに割り当てます。たとえば、エクスプレスアプリを使用している場合は、app.locals.models.User = require('./models/user');
のようになります。 。次に、app
にアクセスできるものなら何でも 必要なしにモデルを見ることができます。
オプション2:エクスポートされた関数に単一の変更を加える
ユーザーモジュールは次のように定義できます:
var mongoose = require('mongoose');
var userSchema = new mongoose.Schema({name: String});
var User = null;
module.exports = function(db) {
if (db && User === null) {
User = db.model('User', userSchema);
}
return User;
};
アプリケーションを起動するときは、次のことを行うだけです。require('./models/user')(db)
。アプリケーション内の他のモジュールによる後続の要求により、db
が削除される可能性があります パラメータ、User
一度だけ設定されます。