मैं नोड.जेएस के साथ एक्सप्रेसजे का उपयोग कर रहा हूं और अपने सभी मार्गों को 'मार्ग' फ़ोल्डर में डाल दिया है।एक्सप्रेसजेएस और अलग-अलग रूट फ़ाइलों के बीच गुजरने वाले चर
सर्वर पर, मैं अपने DB कनेक्शन करते हैं, तो इस तरह, मेरे मार्गों को परिभाषित:
var routes = require('./routes');
var db;
dbconnect = new mongo.Db(config.mongo_database, new mongo.Server(config.mongo_host, config.mongo_port, {}), {});
dbconnect.open(function (err, db) {
db.authenticate(config.mongo_user, config.mongo_pass, function (err, success) {
if (success) {
//routes/index.js
app.get('/', routes.index);
//routes/users.js
app.get('/users', routes.users);
}
});
});
मैं इन मार्गों जावास्क्रिप्ट फ़ाइलों में से प्रत्येक के अंदर 'डाटाबेस' वस्तु का उपयोग करना चाहते हैं। मैं इसे 'app.js' फ़ाइल से index.js या users.js तक कैसे पास करूं?
धन्यवाद!
routes.js:
अब जब भी आप नियंत्रकों में "मॉड्यूल" का पुन: उपयोग करना चाहते हैं तो दोष अब होता है, आपको इसे हस्ताक्षर में जोड़ना होगा, और आप उन परिस्थितियों के साथ समाप्त हो सकते हैं जहां कुछ नियंत्रकों को 2 की आवश्यकता होती है, कुछ की आवश्यकता होती है 3 और एक की आवश्यकता होती है, और अब आपके पास एक हस्ताक्षर है जिसे सबसे बड़ा आम संप्रदाय समायोजित करना है। एक बेहतर दृष्टिकोण मुझे लगता है कि आपके डीबी व्यवहार को अपने आप के ढीले युग्मित मॉड्यूल में समाहित करना होगा। –
@ ब्रैडहारीस: यह निश्चित रूप से एक कमी है। एक ही हस्ताक्षर रखने का एक तरीका, यदि आपको लगता है कि यह महत्वपूर्ण है, तो इसके बजाय पैरामीटर वाले ऑब्जेक्ट को स्वीकार करना है: '{db: db, foo: foo, bar: bar}'। आपका समाधान निश्चित रूप से इसे हल करने का एक बुरा तरीका नहीं है, हालांकि यह स्वयं की कमियों के साथ आता है - एक के लिए यूनिट परीक्षण करना मुश्किल है। –