MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Ist es notwendig, die MongoDB-Verbindung jedes Mal zu öffnen, wenn ich mit der DB arbeiten möchte?

Ich würde davon abraten, eine Verbindung aufrechtzuerhalten, wenn Sie irgendeine Art von Skalierbarkeit wünschen.

Es gibt eine Reihe von Optionen für Verbindungspooling usw., aber die meisten Leute, die überhaupt Zeit mit Node und MongoDB verbringen, wechseln irgendwann zu Mongoose.

Zusätzlich zum Hinzufügen einer netten Schemaebene bietet es eine Verbindungsabstraktion, sodass Sie standardmäßig eine gemeinsam genutzte Verbindung verwenden können, indem Sie mongoose.connect() aufrufen , oder Sie können mehrere Verbindungen erstellen oder am Verbindungspooling teilnehmen, indem Sie mongoose.createConnection() aufrufen . In beiden Fällen rufen Sie es ohne Rückruf auf, und die Mongoose-Maschinerie verzögert nachfolgende Aufrufe an das Modul, bis die Verbindung hergestellt ist, sodass sich Ihr Code nicht darum kümmern muss.

Ihr Anwendungsfall könnte so aussehen:

// 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

Dann 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);

Sagen wir zum Schluss eine Seed-Funktion, um Ihren ersten Stapel von Benutzern zu erstellen:

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