एक Schema
परिभाषित करता है, इसलिए एप्लिकेशन समझता है कि मोंगो डीबी से डेटा को जावास्क्रिप्ट ऑब्जेक्ट्स में कैसे मैप करना है। Schema
आवेदन का एक हिस्सा है। इसमें डेटाबेस के साथ करने के लिए कुछ भी नहीं है। यह केवल जावास्क्रिप्ट ऑब्जेक्ट्स में डेटाबेस को मानचित्र करता है। तो हाँ - अगर आप अच्छा मानचित्रण करना चाहते हैं तो आपको में प्रत्येक एप्लिकेशन को चलाने की आवश्यकता है, जिसकी आवश्यकता है। यह गेटर्स/सेटर्स/सत्यापन/आदि पर भी लागू होता है। हालांकि कि ऐसा करने
नोट:
var mongoose = require('mongoose');
var Schema = mongoose.Schema; // <-- EDIT: missing in the original post
var Comments = new Schema({
title : String
, body : String
, date : Date
});
mongoose.model("Comments", Comments);
globaly Schema
रजिस्टर करेंगे। इसका मतलब यह है कि यदि आवेदन आप चल रहे हैं कुछ बाहरी मॉड्यूल का उपयोग कर रहा है, तो इस मॉड्यूल में आप बस का उपयोग कर सकते
var mongoose = require('mongoose');
var Comments = mongoose.model("Comments");
Comments.find(function(err, comments) {
// some code here
});
(ध्यान दें कि आप वास्तव में इस कोड का उपयोग करने से पहले Schema
रजिस्टर करने की आवश्यकता है, अन्यथा एक अपवाद नहीं होगा फेंक दिया)।
हालांकि यह सब केवल एक नोड सत्र के अंदर काम करता है, इसलिए यदि आप एक और नोड ऐप चला रहे हैं जिसके लिए Schema
तक पहुंच की आवश्यकता है, तो आपको पंजीकरण कोड को कॉल करने की आवश्यकता है। तो यह अलग फ़ाइलों में सभी स्कीमा को परिभाषित करने के लिए एक अच्छा विचार है, उदाहरण के लिए comments.js
फिर फ़ाइल models.js
जो इस
var models = ['comments.js', 'someothermodel.js', ...];
exports.initialize = function() {
var l = models.length;
for (var i = 0; i < l; i++) {
require(models[i])();
}
};
की तरह लग रहे हो सकता है अब बुला require('models.js').initialize();
सभी प्रारंभ हो जाएगा बनाने के इस
var mongoose = require('mongoose');
var Schema = mongoose.Schema; // <-- EDIT: missing in the original post
module.exports = function() {
var Comments = new Schema({
title : String
, body : String
, date : Date
});
mongoose.model("Comments", Comments);
};
की तरह लग सकता है किसी दिए गए नोड सत्र के लिए अपने स्कीमा का।
हाँ, यह अच्छा है। इस विधि का उपयोग करते हुए, क्या आपके पास निर्भरता (एम्बेडेड दस्तावेज़) से निपटने के तरीके पर कोई विचार है? –
@AdrienSchuler निर्भरताओं के साथ कोई समस्या नहीं है। आप फ़ाइलों में से एक में सामान्य रूप से एंबेडेड दस्तावेज़ों को परिभाषित करते हैं। बस सुनिश्चित करें कि अगर फ़ाइल 'second.js' फ़ाइल' first.js' में मॉडल को संदर्भित करती है, तो 'first.js'' model. variable में 'second.js' से पहले चला जाता है। – freakish
यह बहुत अच्छा लगता है, मैं कोशिश कर रहा हूँ, धन्यवाद! –