Opcja 1:Użyj udostępnionego obiektu
Mój kod modelu wygląda podobnie, ale zamiast wielokrotnie wymagać modułów, potrzebuję ich tylko raz, gdy aplikacja się uruchamia, a następnie przypisuję wyniki do współdzielonego obiektu. Na przykład, jeśli używasz ekspresowej aplikacji, możesz po prostu coś takiego jak app.locals.models.User = require('./models/user');
. Następnie wszystko, co ma dostęp do app
może zobaczyć Twoje modele bez konieczności.
Opcja 2:Zapewnij pojedynczą modyfikację w eksportowanej funkcji
Możesz zdefiniować swój moduł użytkownika w następujący sposób:
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;
};
Po uruchomieniu aplikacji wystarczy:require('./models/user')(db)
. Kolejne wymagania innych modułów w Twojej aplikacji mogą porzucić db
parametr, jako User
zostanie ustawiony tylko raz.