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.
