Možnost 1:Použijte sdílený objekt
Můj modelový kód vypadá podobně, ale místo opakovaného vyžadování modulů je vyžaduji pouze jednou při spuštění aplikace a poté přiřadím výsledky ke sdílenému objektu. Pokud například používáte expresní aplikaci, můžete jednoduše něco jako app.locals.models.User = require('./models/user');
. Pak cokoli s přístupem k app
můžete vidět své modely, aniž byste je potřebovali.
Možnost 2:Zajistěte jedinou úpravu v exportované funkci
Svůj uživatelský modul můžete definovat takto:
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;
};
Při spuštění aplikace stačí:require('./models/user')(db)
. Následné požadavky jiných modulů ve vaší aplikaci mohou zahodit db
parametr, jako User
bude nastaveno pouze jednou.