MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

compartilhando conexão db em todo o aplicativo no mangusto

Opção 1:use um objeto compartilhado


Meu código de modelo é semelhante, mas em vez de exigir repetidamente os módulos, eu os exijo apenas uma vez quando o aplicativo é iniciado e, em seguida, atribuo os resultados a um objeto compartilhado. Por exemplo, se você estiver usando um aplicativo expresso, poderá usar algo como app.locals.models.User = require('./models/user'); . Então, qualquer coisa com acesso ao app pode ver seus modelos sem precisar de um require.

Opção 2:garantir uma única modificação na função exportada


Você pode definir seu módulo de usuário assim:
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 você inicia seu aplicativo, você simplesmente precisa:require('./models/user')(db) . Requerimentos subsequentes de outros módulos em seu aplicativo podem descartar o db parâmetro, como User será definido apenas uma vez.