Mongoose - बल संग्रह नाम


120

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

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

जब मैं इस कोड को चलाता हूं, तो mongoose ने userinfo के बजाय UserInfo नामक संग्रह बनाया। मोंगोज़ में संग्रह नाम को कैसे मजबूर करें?


14
मज़ेदार तथ्य: मोंगोज़ को पता है कि बैल का बहुवचन बैलों से है, लेकिन यह नहीं कि हंस का बहुवचन भू-भाग है।
सीन लेटेंडर

जवाबों:


201

यह करना चाहिए

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

अधिक जानकारी के लिए Mongoose प्रलेखन के इस लिंक को देखें।


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

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

यह सुपर सहायक था। मैंने दो दिन बिताए और अब कुछ करने की कोशिश कर रहा हूं।
होल्ट मैन्सफील्ड

79

यदि आप mongoose 2.0.0 का उपयोग कर रहे हैं, तो संग्रहनाम को तीसरे तर्क के रूप में पास करें

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

मॉडल के स्तर पर एक कस्टम संग्रह नाम घोषित करने का सही तरीका।
तेजाका २ '’१

25

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

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

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

14

Mongoose.model की एपीआई संरचना यह है:

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

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

उदाहरण:

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

या

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

या

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



1

उत्तर:

mongoose.model('UserInfo', UserInfo, 'userinfo'); //3rd parameter 'userinfo': as collection name

वाक्यविन्यास के साथ बेहतर व्याख्या:

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

पैरामीटर स्पष्टीकरण:

  • 1 पैरामीटर - नाम मॉडल का नाम
  • दूसरा पैरामीटर [स्कीमा] स्कीमा नाम
  • तीसरा पैरामीटर [संग्रह] संग्रह नाम (वैकल्पिक, मॉडल नाम से प्रेरित)
  • 4 वाँ पैरामीटर [SkipInit] चाहे इनिशियलाइज़ेशन छोड़ें (झूठ के लिए चूक)

0

आपका मॉडल नाम: userInfo.js

एक्सप्रेस मार्ग फ़ाइल या app.js में

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

उसके बाद आपके userInfo.js में

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var UserInfo = new Schema({
 username : String,
 password : String 
});
module.exports = mongoose.model('UserInfo', UserInfo);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.