एक परिभाषित करता है Schema इसलिए एप्लिकेशन समझता है कि MongoDB से जावास्क्रिप्ट ऑब्जेक्ट्स में डेटा को कैसे मैप किया जाए। 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);
Schema पंजीकृत करेगा वैश्विक। इसका मतलब यह है कि यदि आप जो एप्लिकेशन चला रहे हैं वह किसी बाहरी मॉड्यूल का उपयोग कर रहा है, तो इस मॉड्यूल में आप बस उपयोग कर सकते हैं
var mongoose = require('mongoose');
var Comments = mongoose.model("Comments");
Comments.find(function(err, comments) {
// some code here
});
(ध्यान दें कि आपको वास्तव में Schema . पंजीकृत करने की आवश्यकता है इस कोड का उपयोग करने से पहले, अन्यथा एक अपवाद फेंक दिया जाएगा)।
हालाँकि यह सब केवल एक नोड सत्र के अंदर काम करता है, इसलिए यदि आप कोई अन्य नोड ऐप चला रहे हैं जिसके लिए Schema तक पहुंच की आवश्यकता है , तो आपको पंजीकरण कोड को कॉल करना होगा। इसलिए सभी स्कीमा को अलग-अलग फाइलों में परिभाषित करना एक अच्छा विचार है, उदाहरण के लिए comments.js ऐसा दिखाई दे सकता है
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);
};
फिर फ़ाइल बनाएँ 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(); किसी दिए गए नोड सत्र के लिए आपके सभी स्कीमा को प्रारंभ करेगा।