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

È necessario aprire la connessione MongoDB ogni volta che voglio lavorare con il DB?

Consiglierei di non mantenere una connessione se si desidera qualsiasi tipo di scalabilità.

Ci sono una serie di opzioni per il pool di connessioni, ecc, ma la maggior parte delle persone che trascorrono del tempo con Node e MongoDB finiscono per passare a Mongoose a un certo punto.

Oltre ad aggiungere un bel livello di schema, offre l'astrazione della connessione in modo che tu possa impostare una connessione condivisa chiamando mongoose.connect() oppure puoi creare più connessioni o partecipare al pool di connessioni chiamando mongoose.createConnection() . In entrambi i casi, lo chiami senza essere richiamato e il macchinario della mangusta rimanderà le chiamate successive al modulo fino a quando non verrà stabilita la connessione, in modo che il tuo codice non debba preoccuparsi.

Qualcosa come il tuo caso d'uso potrebbe assomigliare a questo:

// in your app.js or server.js file
var mongoose = require('mongoose');
mongoose.connect(config.db.url); // assuming you have some module that handles config variables

Quindi in ./models/user.js

const mongoose = require('mongoose'),
         Schema   = mongoose.Schema;

   const UserSchema = new Schema({
      name: String,
      age: Number,
      roles: [String]
   });
   mongoose.model('User',UserSchema);

infine, diciamo una funzione seed per creare il tuo batch iniziale di utenti:

const mongoose = require('mongoose'),
      User     = mongoose.model('User');

// create some users
var user1 = new User({name: 'modulus admin', age: 42, roles: ['admin', 'moderator', 'user']});
var user2 = new User({name: 'modulus user', age: 22, roles: ['user']});

user1.save(console.log);
user2.save(console.log);