Mulighed 1:Brug et delt objekt
Min modelkode ligner, men i stedet for gentagne gange at kræve modulerne kræver jeg dem bare én gang, når applikationen starter, og tildeler derefter resultaterne til et delt objekt. For eksempel, hvis du bruger en ekspres-app, kan du bare så noget som app.locals.models.User = require('./models/user');
. Derefter alt med adgang til app
kan se dine modeller uden behov.
Mulighed 2:Sørg for en enkelt ændring i den eksporterede funktion
Du kan definere dit brugermodul sådan:
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 starter din applikation, skal du blot:require('./models/user')(db)
. Efterfølgende krav fra andre moduler i din applikation kan droppe db
paramater, som User
vil kun blive indstillet én gang.