Option 1:Verwenden Sie ein gemeinsames Objekt
Mein Modellcode sieht ähnlich aus, aber anstatt die Module wiederholt anzufordern, benötige ich sie nur einmal, wenn die Anwendung startet, und weise die Ergebnisse dann einem gemeinsam genutzten Objekt zu. Wenn Sie beispielsweise eine Express-App verwenden, könnten Sie einfach so etwas wie app.locals.models.User = require('./models/user');
verwenden . Dann alles mit Zugriff auf die app
kann Ihre Modelle sehen, ohne dass eine Anforderung erforderlich ist.
Option 2:Stellen Sie eine einzelne Änderung in der exportierten Funktion sicher
Sie können Ihr Benutzermodul wie folgt definieren:
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;
};
Wenn Sie Ihre Anwendung starten, brauchen Sie nur:require('./models/user')(db)
. Nachfolgende Anforderungen durch andere Module in Ihrer Anwendung können die db
löschen Parameter, als User
wird nur einmal gesetzt.