javascript - Apakah cara terbaik untuk membuka sambungan pangkalan data (mongo) yang berterusan di NodeJS
Saya menggunakan pemandu node-mongodb-native dan saya sedang mencari cara untuk membuka sambungan pangkalan data yang berterusan daripada membukanya/menutupnya setiap kali.
Sambungan yang dipermudahkan mungkin kelihatan seperti ini...
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
});
Bagaimana saya boleh menjadikan objek db boleh diakses oleh mana-mana modul dalam aplikasi saya? Daripada perlu membuka sambungan untuk setiap modul secara berasingan?
Bolehkah ini dilakukan menggunakan module.exports? Atau pembolehubah global?
Jawapan #1
Penyelesaian saya:
getClient = function(cb) {
if(typeof client !== "undefined") {
return cb(null, client);
} else {
db.open(function(err, cli) {
client = cli;
getClient(cb);
});
}
}
Sekarang, sebagai ganti
db.open(function(err, client) {
...stuff...
});
Lakukan :
getClient(function(err, client) {
...stuff...
});
Panggilan pangkalan data pertama anda membuka sambungan, yang lain menggunakan sambungan itu.
BTW: cadangan untuk memeriksa sama ada klien masih hidup?
Jawapan #2
Edit: Jangan gunakan mongoose, gunakan sesuatu seperti mongo-col atau mongo-client. Kemudian buka satu klien sahaja dalam aplikasi anda. Saya mempunyai fail ./client.js yang mengeksport klien mongo yang dibuka dan dikonfigurasi dengan betul.
Mongoose adalah abstraksi yang mantap di atas mongodb yang akan membolehkan anda mengendalikan mongodb dengan lebih mudah. Ia berbaloi untuk dilihat.
Apa yang sebenarnya anda ingin lakukan ialah membuka semula klien anda setiap kali anda melakukan apa-apa dengan mongo.
Anda tidak mengekalkan sambungan terbuka ke mana-mana pangkalan data lain.
Hanya letakkan DB anda dalam satu modul bersama-sama beberapa fungsi pembantu/pembungkus.
