javascript - Apa cara terbaik untuk membuka koneksi database (mongo) yang persisten di NodeJS
Saya menggunakan driver node-mongodb-native dan saya sedang mencari cara untuk membuka koneksi database yang persisten daripada membuka/menutupnya setiap kali.
Koneksi yang disederhanakan mungkin terlihat 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 bisa membuat objek db dapat diakses oleh modul mana pun dalam aplikasi saya? Daripada harus membuka koneksi untuk setiap modul secara terpisah?
Bisakah ini dilakukan menggunakan module.exports? Atau variabel global?
Jawaban #1
Solusi saya:
getClient = function(cb) {
if(typeof client !== "undefined") {
return cb(null, client);
} else {
db.open(function(err, cli) {
client = cli;
getClient(cb);
});
}
}
Sekarang, alih-alih
db.open(function(err, client) {
...stuff...
});
Lakukan :
getClient(function(err, client) {
...stuff...
});
Panggilan db pertama Anda membuka koneksi, yang lainnya menggunakan koneksi itu.
Ngomong-ngomong: ada saran untuk memeriksa apakah klien masih aktif?
Jawaban #2
Edit: Jangan menggunakan mongoose, gunakan sesuatu seperti mongo-col atau mongo-client. Kemudian miliki satu klien yang terbuka di aplikasi Anda. Saya memiliki file ./client.js yang mengekspor klien mongo yang terbuka dan dikonfigurasi dengan benar.
Mongoose adalah sebuah abstraksi yang kuat di atas MongoDB yang akan memungkinkan Anda untuk menangani MongoDB dengan lebih mudah. Ini layak untuk dilihat.
Yang sebenarnya ingin Anda lakukan adalah membuka kembali klien Anda setiap kali Anda melakukan sesuatu dengan mongo.
Anda tidak menjaga koneksi terbuka ke database lain.
Cukup letakkan DB Anda dalam sebuah modul bersama beberapa fungsi pembantu/pembungkus.
