MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

NodeJS एक्सप्रेस निर्भरता इंजेक्शन और डेटाबेस कनेक्शन

अपडेट किया गया उत्तर:05/02/15

यदि आप प्रत्येक अनुरोध वस्तु के लिए एक DB कनेक्शन संलग्न करना चाहते हैं, तो अपनी सेवा में उस कनेक्शन का उपयोग करें, कनेक्शन को myService को पास करना होगा किसी न किसी तरह। नीचे दिया गया उदाहरण ऐसा करने का एक तरीका दिखाता है। अगर हम db.current . का उपयोग करने का प्रयास करते हैं या उस प्रभाव के लिए कुछ, हम अपने डीबी मॉड्यूल में राज्य संग्रहित करेंगे। मेरे अनुभव में, इससे परेशानी होगी।

वैकल्पिक रूप से, मैंने यह पिछला जवाब . इस उदाहरण के लिए इसका अर्थ निम्नलिखित है:

// 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.
      }
}

इस दृष्टिकोण के साथ, हमने एपीआई/ऐप/राउटर मॉड्यूल से डीबी मॉड्यूल को अलग कर दिया है और वास्तव में इसका उपयोग करने वाले मॉड्यूल को ही पता चलेगा कि यह मौजूद है।

पिछला उत्तर:05/01/15

आप जिस बारे में बात कर रहे हैं वह एक्सप्रेस मिडलवेयर का उपयोग करके किया जा सकता है। यह इस तरह दिख सकता है:

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);
});

मैंने व्यक्तिगत रूप से new MyService . जैसा कुछ नहीं देखा है एक्सप्रेस अनुप्रयोगों में पहले। इसका मतलब यह नहीं है कि यह नहीं किया जा सकता है, लेकिन आप इस तरह के दृष्टिकोण पर विचार कर सकते हैं

// 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. MongoDB में प्रारंभिक डेटा कैसे लोड करें?

  2. नई तिथि () कुल मिलाकर $प्रोजेक्ट

  3. मैं mongodb में किसी सरणी के शीर्ष पर एक मान कैसे जोड़ूं?

  4. MongoDB GROUP BY में HAVING करने का सही तरीका क्या है?

  5. शेफ सोलो एरर:कुकबुक उपयुक्त नहीं मिली