2011-09-20 5 views
83

मैं डेटाबेस बनाने और इसमें संग्रह बनाने के लिए मोंगोज़ का उपयोग करने की कोशिश कर रहा हूं। मेरे कोड है:मोंगोस - फोर्स संग्रह का नाम

var mongoose = require('mongoose'); 
    var db = mongoose.connect('mongodb://localhost/testdb'); 
    var Schema = mongoose.Schema; 

    var UserInfo = new Schema({ 
    username : String, 
    password : String 
    }); 

    mongoose.model('UserInfo', UserInfo); 

    var user = db.model('UserInfo'); 


    var admin = new user(); 
    admin.username = "sss"; 
    admin.password = "ee"; 
    admin.save(); 

मुझे इस कोड चलाने के लिए, नेवला बनाया संग्रह UserInfo के बजाय UserInfo नाम दिया है। मोंगोज़ में संग्रह नाम को कैसे बल दें?

उत्तर

135

यह

var UserInfo = new Schema({ 
    username : String, 
    password : String 
}, { collection: 'userinfo' }); 
+6

इसके लिए धन्यवाद। यहां प्रासंगिक लिंक दिया गया है: http://mongoosejs.com/docs/guide.html#collection –

+0

धन्यवाद @ जोनपेज, मैं सोच रहा था कि क्यों व्यक्ति वस्तुओं के संग्रह को लोगों के रूप में नामित किया गया था। आपके द्वारा प्रदान किया गया लिंक एक अच्छा संदर्भ है। मुझे लगता है कि स्कीमा बनाते समय कस्टम संग्रह नाम सेट करने की यह विधि मॉडल बनाने के दौरान संग्रह नाम को परिभाषित करने की दूसरी विधि से बेहतर है। – Bharat

54

आप नेवला 2.0.0 का उपयोग कर रहे हैं, तो तीसरा तर्क

mongoose.model('UserInfo', UserInfo, 'UserInfo'); 
+2

ने भी मोंगोस 4.7.6 –

8

आप अपने स्कीमा में संग्रह नाम निर्धारित करने की आवश्यकता के रूप में collectionName पारित करना चाहिए। mongoose.model की

new Schema({...},{collection: 'userInfo'}); 
9

एपीआई संरचना यह है:

Mongoose#model(name, [schema], [collection], [skipInit]) 

क्या नेवला करना है कि, जब कोई संग्रह तर्क पारित हो जाता है, नेवला मॉडल का नाम pluralizing द्वारा एक संग्रह नाम पैदा करता है। यदि आपको यह व्यवहार पसंद नहीं है, तो या तो संग्रह का नाम पास करें या अपने स्कीमा संग्रह नाम विकल्प को सेट करें।

उदाहरण:

var schema = new Schema({ name: String }, { collection: 'actor' }); 

या

schema.set('collection', 'actor'); 

या

var collectionName = 'actor' 
var M = mongoose.model('Actor', schema, collectionName); 
9

नेवला डिफ़ॉल्ट रूप से संग्रह नाम में जोड़ देगा 'एस'। यदि आप इससे बचना चाहते हैं तो संग्रह के नाम के रूप में तीसरे तर्क को पास करें

var mongoose = require('mongoose'); 
     var db = mongoose.connect('mongodb://localhost/testdb'); 
     var Schema = mongoose.Schema; 

     var UserInfo = new Schema({ 
     username : String, 
     password : String 
     }); 

     mongoose.model('UserInfo', UserInfo, 'UserInfo') 

    tan = new user(); 
     admin.username = "sss"; 
     admin.password = "ee"; 
     admin.save(); 
+0

के लिए काम किया यह सबसे अच्छा सुझाव है। मुझे हमेशा mongoose.model() में संग्रह नाम पास करने के लिए सबसे आसान लगता है। यह भी इंगित करने के लिए अच्छा है कि कैसे mongoose संग्रह नाम pluralizes, जो पहली बार शुरू किया जब भ्रमित था। –

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

  • कोई संबंधित समस्या नहीं^_^