Опция 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
ще бъде зададен само веднъж.