javascript - Mikä on paras tapa avata pysyvä (mongo) tietokantayhteys NodeJS:ssä


Käytän node-mongodb-native -ajureita ja etsin tapaa avata pysyvä tietokantayhteys sen sijaan, että avaisin/suljen sen joka kerta.

Yksinkertaistettu yhteys voisi näyttää tältä...

var DB = new mongo.Db('vows', new mongo.Server("127.0.0.1", 27017, {})),
    connection = DB.open(function(err, db) {
       // Here we have access to db
    });

Kuinka voin tehdä db-objektin kaikkien sovellukseni moduulien käyttöön? Sen sijaan, että joutuisin avaamaan yhteyden erikseen jokaiselle moduulille?

Voidaanko tämä tehdä käyttäen module.exportsia? Tai globaalia muuttujaa?

Vastaus #1

Ratkaisuni:

getClient = function(cb) {
    if(typeof client !== "undefined") {
        return cb(null, client);
    } else {
        db.open(function(err, cli) {
            client = cli;
            getClient(cb);
        });
    }
}

Nyt, sen sijaan

db.open(function(err, client) {
    ...stuff...
});

Tee :

getClient(function(err, client) {
    ...stuff...
});

Ensimmäinen tietokantakutsusi avaa yhteyden, muut käyttävät sitä yhteyttä.

Muuten: ehdotuksia sen tarkistamiseen, onko asiakas yhä elossa?

Vastaus #2

Muokkaa: Älä käytä mongoosea, käytä jotain kuten mongo-col tai mongo-client. Sitten pidä yksi asiakas avoinna sovelluksessasi. Minulla on ./client.js tiedosto, joka vie oikein avatun ja konfiguroidun mongo-asiakkaan.

Mongoose on vankka abstraktio MongoDB:n päällä, joka antaa sinun käsitellä MongoDB:tä helpommin. Se on katsomisen arvoinen.

Mitä todella haluat tehdä, on avata asiakkaasi uudelleen aina kun teet jotain Mongon kanssa.

Et pidä avointa yhteyttä mihinkään muuhun tietokantaan.

Aseta vain DB moduuliin yhdessä joidenkin apu-/kääre-funktioiden kanssa.