Alternativ 1:Använd ett delat objekt
Min modellkod ser likadan ut, men istället för att upprepade gånger kräva modulerna behöver jag dem bara en gång när applikationen startar och sedan tilldelar resultaten till ett delat objekt. Om du till exempel använder en expressapp kan du bara göra något som app.locals.models.User = require('./models/user');
. Sedan allt med tillgång till app
kan se dina modeller utan behov.
Alternativ 2:Säkerställ en enda ändring i den exporterade funktionen
Du kan definiera din användarmodul så här:
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;
};
När du startar din applikation behöver du bara:require('./models/user')(db)
. Efterföljande krav från andra moduler i din applikation kan ta bort db
paramater, som User
kommer bara att ställas in en gång.