sql >> Base de Datos >  >> NoSQL >> MongoDB

compartir la conexión db en toda la aplicación en mongoose

Opción 1:usar un objeto compartido

El código de mi modelo es similar, pero en lugar de requerir los módulos repetidamente, solo los requiero una vez cuando se inicia la aplicación y luego asigno los resultados a un objeto compartido. Por ejemplo, si está utilizando una aplicación Express, podría simplemente hacer algo como app.locals.models.User = require('./models/user'); . Entonces cualquier cosa con acceso a la app puede ver sus modelos sin necesidad de un requerimiento.

Opción 2:Garantizar una única modificación en la función exportada

Puede definir su módulo de usuario así:

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;
};

Cuando inicia su aplicación, simplemente necesita:require('./models/user')(db) . Los requisitos posteriores de otros módulos en su aplicación pueden eliminar el db parámetro, como User solo se establecerá una vez.