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

Node.js und MongoDB unter Wiederverwendung des DB-Objekts

Sie könnten immer ein Modul schreiben, das Ihre Datenbankverbindungen initialisiert und sie in Ihrem gesamten Programm zugänglich macht. Zum Beispiel:

mongo.js

var mongodb = require('mongodb');

module.exports.init = function (callback) {
  var server = new mongodb.Server("127.0.0.1", 27017, {});
  new mongodb.Db('test', server, {w: 1}).open(function (error, client) {
    //export the client and maybe some collections as a shortcut
    module.exports.client = client;
    module.exports.myCollection = new mongodb.Collection(client, 'myCollection');
    callback(error);
  });
};

app.js

var mongo = require('./mongo.js');

//setup express...

//initialize the db connection
mongo.init(function (error) {
    if (error)
        throw error;

    app.listen(80); //database is initialized, ready to listen for connections
});

randomFile.js

var mongo = require('./mongo.js');

module.exports.doInsert = function () {
  //use the collection object exported by mongo.js
  mongo.myCollection.insert({test: 'obj'}, {safe:true}, function(err, objects) {
    if (err)
        console.warn(err.message);
  });
};

Ich weiß, dass Leute über Pooling sprechen, aber als ich das Pooling von Mongo-Verbindungen im Vergleich zu einer einzelnen Verbindung für alle Anforderungen bewertete, schnitt die einzelne Verbindung tatsächlich besser ab. Zugegeben, das war vor ungefähr einem Jahr, aber ich bezweifle, dass sich das grundlegende Konzept geändert hat. Alle Anfragen sind asynchron, es sind also nicht mehrere Verbindungen notwendig, um gleichzeitige Anfragen zu stellen.

Was MongoClient betrifft, denke ich, dass dies die neue Syntax ist, die sie fördern. So oder so, es ist im Wesentlichen ein Client Objekt, das Sie behalten und zugänglich machen möchten, unabhängig davon, welchen Stil Sie verwenden.