Option 1 :Utiliser un objet partagé
Mon code de modèle ressemble, mais au lieu d'exiger les modules à plusieurs reprises, je les demande juste une fois lorsque l'application démarre, puis j'attribue les résultats à un objet partagé. Par exemple, si vous utilisez une application express, vous pouvez simplement quelque chose comme app.locals.models.User = require('./models/user');
. Ensuite, tout ce qui a accès à l'app
peut voir vos modèles sans avoir besoin d'un besoin.
Option 2 : Assurez-vous d'une seule modification dans la fonction exportée
Vous pouvez définir votre module utilisateur comme suit :
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;
};
Lorsque vous lancez votre application il vous suffit de :require('./models/user')(db)
. Les demandes ultérieures d'autres modules de votre application peuvent supprimer le db
paramètre, comme User
ne sera défini qu'une seule fois.