MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Injeksi Ketergantungan NodeJS Express dan Koneksi Database

Jawaban yang Diperbarui:05/02/15

Jika Anda ingin melampirkan koneksi DB ke setiap objek permintaan, kemudian menggunakan koneksi itu di layanan Anda, koneksi harus diteruskan ke myService bagaimanapun. Contoh di bawah ini menunjukkan salah satu cara untuk melakukannya. Jika kita mencoba menggunakan db.current atau sesuatu seperti itu, kami akan menyimpan status dalam modul DB kami. Dalam pengalaman saya, itu akan menyebabkan masalah.

Atau, saya memaparkan pendekatan yang saya gunakan (dan masih digunakan) di jawaban sebelumnya ini . Apa artinya ini untuk contoh ini adalah sebagai berikut:

// api.js
var MyService = require(./services/MyService')

...

router.get('/foo/:id?', function (req, res) {
    MyService.performTask(req.params.id);
});


// MyService.js
var db = require('db');
module.exports = {
   performTask: function(id)
      {
         var connection = db.getOpenConnection();
         // Do whatever you want with the connection.
      }
}

Dengan pendekatan ini, kami telah memisahkan modul DB dari modul api/app/router dan hanya modul yang benar-benar menggunakannya yang akan mengetahui keberadaannya.

Jawaban Sebelumnya:05/01/15

Apa yang Anda bicarakan dapat dilakukan dengan menggunakan middleware ekspres. Berikut tampilannya:

var db = require('db');

// Attach a DB connection to each request coming in
router.use(req, res, next){
   req.locals.db = db.getOpenConnection();
   next();
}

// Later on..
router.get('/foo/:id?', function (req, res) {
  // We should now have something attached to res.locals.db!
  var service = new MyService(res.locals.db);
});

Saya pribadi belum pernah melihat sesuatu seperti new MyService sebelumnya dalam aplikasi ekspres. Itu tidak berarti itu tidak bisa dilakukan, tetapi Anda dapat mempertimbangkan pendekatan seperti ini

// router.js
var MyService = require('MyService');
router.get('/foo/:id?', function (req, res) {
  MyService.foo(res.locals.db);
});

// MyService.js
module.exports.foo(connection){
  // I have a connection!
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Pencarian Teks Lengkap di MongoDB tidak memberikan hasil yang diharapkan untuk @@@

  2. NodeJS + Mongo:Masukkan jika tidak ada, jika tidak - perbarui

  3. grup mongodb berdasarkan karakter pertama

  4. Menggunakan agregasi untuk menyortir dalam kondisi kompleks di Mongodb

  5. mongodb/mongoose findMany - temukan semua dokumen dengan ID yang terdaftar dalam array