Opzione 1:usa un oggetto condiviso
Il mio codice del modello sembra simile, ma invece di richiedere ripetutamente i moduli, li richiedo solo una volta all'avvio dell'applicazione e quindi assegno i risultati a un oggetto condiviso. Ad esempio, se stai utilizzando un'app express, potresti semplicemente qualcosa come app.locals.models.User = require('./models/user');
. Quindi qualsiasi cosa con accesso all'app
può vedere i tuoi modelli senza bisogno di una richiesta.
Opzione 2:assicurati una singola modifica nella funzione esportata
Puoi definire il tuo modulo utente in questo modo:
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;
};
Quando avvii la tua applicazione devi semplicemente:require('./models/user')(db)
. Richieste successive da parte di altri moduli nella tua applicazione possono eliminare il db
parametro, come User
verrà impostato solo una volta.