2014-04-25 6 views
5

मैं एक निर्देशिका संरचनानिर्यात और अनेक मॉडल

./lib 
./lib/model1.js 
./lib/model2.js 
दोनों मॉडल

नेवला का उपयोग कर एक ही MongoDB उदाहरण से कनेक्ट है भर में मेरी नेवला कनेक्शन पुन: उपयोग, लेकिन परिभाषित विभिन्न मॉडलों:

// model1.js 
var mongoose = require ('mongoose'); 
mongoose.connect ('bla') 
var db = mongoose.connection; 

var schema1, model1; 

db.on('error', console.error.bind(console, 'database, why you no connect?')); 

db.once('open', function callback() { 

    schema1 = mongoose.Schema({ 
    // some properties 
    }); 

    model1 = mongoose.model1 ('model1', schema1); 

}); 

क्या है डेटाबेस कनेक्शन बनाने के लिए सबसे अच्छा तरीका है और प्रत्येक मॉडल के लिए इसका पुन: उपयोग करें? सबसे अच्छी निर्देशिका संरचना क्या है? शायद ./lib/middleware/db.js?

This question प्रासंगिक लगता है लेकिन यह मोंगोस के बजाय मोंगोडब एनपीएम मॉड्यूल का उपयोग कर रहा है, सवाल अस्पष्ट है, और सभी लेखक की टिप्पणियां हटा दी गई हैं।

उत्तर

9

आपको अपने एप्लिकेशन के स्टार्टअप कोड में केवल एक बार mongoose.connect पर कॉल करना चाहिए। इससे आपके एप्लिकेशन के लिए डिफ़ॉल्ट कनेक्शन पूल बन जाएगा।

आपकी model1.js और model2.js फ़ाइलें mongoose.model पर कॉल के माध्यम से अपने मॉडल बनाती हैं जो उन्हें डिफ़ॉल्ट कनेक्शन से जोड़ती है।

तो यह वास्तव में आपके लिए मोंगोस द्वारा संभाला जाता है।

+2

तो @ जॉनीनीके, मैं बस कुछ सत्यापित करना चाहता हूं। क्या आप कह रहे हैं कि लोगों को वास्तव में मोंगोस ऑब्जेक्ट को निर्यात करना नहीं है, जहां भी वे अपने डीबीएस से कनेक्ट हो रहे हैं क्योंकि आवश्यकता के दौरान (हमेशा 'मोंगोज़') कथन का उपयोग करते समय उनके पास हमेशा कोड में एक ही ऑब्जेक्ट होता है? – alaboudi

+2

@alaboudi यह सही है। – JohnnyHK

7

./app.js में:

var mongoose = require('mongoose'); 
mongoose.connect('connStr'); //connect once 

./lib/model1.js में:

var mongoose = require('mongoose'); 
var model1 = mongoose.model('model1', { 
    foo1: { type: String, required: false}, 
    bar1: { type: String, required: false} 
}); 
module.exports = model1; 

./lib/model2.js में:

var mongoose = require('mongoose'); 
var model2 = mongoose.model('model2', { 
    foo2: { type: String, required: false}, 
    bar2: { type: String, required: false} 
}); 
module.exports = model2; 

फिर इस तरह के मॉडल का उपयोग करें (उदाहरण के लिए ./routes.js):

var model1 = require('./lib/model1.js'); 
var m1 = new model1({ 
    foo: 'value_for_foo', 
    bar: 'value_for_bar' 
}); 

m1.save(function (err) { 
    if (err) {console.log(err.stack);}  
    console.log('saving done...'); 
}); 
+1

क्या होगा यदि मेरे पास एकाधिक कनेक्शन हैं? mongoose अब काम नहीं करता –

+0

@badrslaoui कृपया इस SO answear का संदर्भ लें: http://stackoverflow.com/a/19475259/2013487 –

+0

पुराने धागे पर टिप्पणी करना लेकिन यह अब और काम नहीं कर रहा है। कोई विचार अब इसे कैसे करें? – iWillBeMaster

संबंधित मुद्दे