MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

condivisione della connessione db su tutta l'app in mangusta

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.