Judul ini sendiri adalah proposisi, karena secara default, setiap modul dalam aplikasi Node.js dibagikan dengan koneksi basis data yang sama. Tetapi jika posturnya salah, itu bisa jelek dan bahkan mungkin salah.
Anda dapat mengabaikan bagian berikut dan sampai ke intinya.
latar belakang
Baru -baru ini, saya melakukan desain kursus profesional, judulnya adalah "Sistem Manajemen Pemesanan Tiket Udara". Persyaratannya relatif sederhana, jadi saya mencoba menggunakan node.js yang saya pelajari baru -baru ini. Saya juga menyelidiki jenis kerangka apa yang lebih cocok. Setelah membaca beberapa kerangka kerja, saya menemukan bahwa ini adalah pembunuh. Jika Anda punya waktu untuk membaca dokumen dan mencari informasi, lebih baik menulisnya secara langsung. Akhirnya, setelah menulis, saya akan meletakkan kode di GitHub. Semua orang dipersilakan untuk mengkritik dan mengoreksi saya.
Dalam hal database, saya pikir saya lebih akrab dengan dan menyukai JSON (saya akui jika saya tidak belajar SQL dengan baik -_-#), jadi saya memilih MongoDB. Node + Mongo adalah kombinasi backend yang semakin populer dalam beberapa tahun terakhir, dan ada banyak informasi tentang cara menggunakannya bersama di internet. Tetapi untuk menghemat waktu (desain kursus hanya lebih dari satu minggu), dan lebih fokus pada sistem dan logika, saya menggunakan Mongoose, ekstensi Node.js yang digunakan khusus untuk pemodelan data MongoDB, untuk sangat mengurangi kode yang mengoperasikan database.
Topik utama
Saya telah menetapkan dua model data, satu adalah pengguna (pengguna) dan yang lainnya adalah penerbangan (penerbangan), yang dienkapsulasi ke dalam dua modul (modul) user.js, flight.js. Model secara khusus bertanggung jawab untuk berinteraksi dengan database. Baik modul pengguna dan penerbangan perlu terhubung ke database. Pada awalnya, kode saya adalah sebagai berikut:
// ------ user.js ----- // membutuhkan mongoose.js referensi mongoose.jsvar m = membutuhkan ('mongoose'); // terhubung ke database terhubung ke database m.connect ('mongoDb: // localhost/test'); // beberapa kode lain ... // ----- penerbangan. require('mongoose');// connect to database Connect to database M.connect('mongodb://localhost/test');// ... some other code ...// ------ models.js -----var user = require('./user'), flight = require('./flight');// ----- index.js -----var Models = require('./models');Belum lagi bahwa metode penulisan ini tidak kering sama sekali, metode ini sendiri salah. Ketika saya menjalankan index.js, saya mendapatkan kesalahan berikut.
> Node Index.js> Koneksi Kesalahan: {[Kesalahan: Mencoba membuka koneksi yang tidak tertutup.] Status: 2}Kesalahannya adalah: Cobalah untuk membuka koneksi yang tidak tertutup.
Jadi kita harus terhubung ke database sekali di satu tempat, dan kemudian modul lain yang perlu terhubung ke database berinteraksi dengan database melalui modul ini. Itu seperti papan kabel, dan dia berteriak tanpa ragu: "Hanya ada satu soket di dinding, jangan merampoknya! Biarkan aku pergi! Kamu ... tidak apa -apa!"
Rencana tertentu
Kami meletakkan tindakan menghubungkan ke database ke dalam modul dan mengekspos koneksi ke modul lain di seluruh aplikasi, dan kemudian modul lain yang perlu terhubung ke database dapat merujuk ke koneksi ini.
// ----- database.js ----- var m = membutuhkan ('mongoose'); m.connect ('mongoDb: // localhost/test'); // referensi ke koneksi database membuat referensi untuk koneksi ini var db = m.connection; ----- user.js ----- flight.js serupa -----/... beberapa kode lain ... // kami akan lulus referensi koneksi basis data sebagai parameter dalam model.js module.exports = function (db) {if (db) {// melakukan hal-hal dengan koneksi ... jika Anda terhubung ke database, Anda dapat melakukan database {,}}}}} {J. Ambil referensi ke koneksi database merujuk ke koneksi database var db = membutuhkan ('./ database'); // Lewati referensi ke koneksi database ke modul yang perlu terhubung ke database, dan tugas selesai! var user = membutuhkan ('./ user') (db), flight = membutuhkan ('./ flight') (db);Ini adalah salah satu cara untuk mendapatkan beberapa modul dari aplikasi Node.js untuk berbagi koneksi basis data. Saya melihatnya di stackoverflow. Jika Anda memiliki cara yang lebih baik, silakan bagikan dengan Anda di komentar!