यदि आप चाहते हैं कि यह सेटअप काम करे, तो आपको निम्न कार्य करने होंगे:
Meteor.publish('thisNameDoesNotMatter', function () {
var self = this;
var handle = Meteor.users.find({}, {
fields: {emails: 1, profile: 1}
}).observeChanges({
added: function (id, fields) {
self.added('thisNameMatters', id, fields);
},
changed: function (id, fields) {
self.changed('thisNameMatters', id, fields);
},
removed: function (id) {
self.removed('thisNameMatters', id);
}
});
self.ready();
self.onStop(function () {
handle.stop();
});
});
क्लाइंट साइड पर नहीं, आपको क्लाइंट-साइड-ओनली कलेक्शन को परिभाषित करने की आवश्यकता है:
directories = new Meteor.Collection('thisNameMatters');
और संबंधित डेटा सेट की सदस्यता लें:
Meteor.subscribe('thisNameDoesNotMatter');
यह अब काम करना चाहिए। अगर आपको लगता है कि यह स्पष्टीकरण पर्याप्त स्पष्ट नहीं है तो मुझे बताएं।
संपादित करें
यहां, self.added/changed/removed
विधियाँ कमोबेश एक ईवेंट डिस्पैचर के रूप में कार्य करती हैं। संक्षेप में वे कॉल करने वाले प्रत्येक क्लाइंट को निर्देश देते हैं
Meteor.subscribe('thisNameDoesNotMatter');
thisNameMatters
. नाम के क्लाइंट के संग्रह पर लागू होने वाले अपडेट के बारे में यह मानते हुए कि यह संग्रह मौजूद है। नाम - पहले पैरामीटर के रूप में पारित - लगभग मनमाने ढंग से चुना जा सकता है, लेकिन यदि क्लाइंट पक्ष पर कोई संबंधित संग्रह नहीं है तो सभी अपडेट को अनदेखा कर दिया जाएगा। ध्यान दें कि यह संग्रह केवल क्लाइंट-साइड हो सकता है, इसलिए जरूरी नहीं कि यह आपके डेटाबेस में "वास्तविक" संग्रह के अनुरूप हो।
अपने publish
. से कर्सर लौटाना विधि यह उपरोक्त कोड के लिए केवल एक शॉर्टकट है, एकमात्र अंतर यह है कि वास्तविक संग्रह का नाम हमारे theNameMatters
के बजाय उपयोग किया जाता है . यह तंत्र वास्तव में आपको अपने डेटासेट के जितने चाहें उतने "दर्पण" बनाने की अनुमति देता है। कुछ स्थितियों में यह काफी उपयोगी हो सकता है। एकमात्र समस्या यह है कि ये "संग्रह" केवल-पढ़ने के लिए होंगे (जो पूरी तरह से समझ में आता है बीटीडब्लू) क्योंकि यदि वे सर्वर पर परिभाषित नहीं हैं तो संबंधित 'सम्मिलित/अद्यतन/निकालें' विधियां मौजूद नहीं हैं।