मेरे पास एक बड़े "संदेश" संग्रह के साथ एक मोंगो डीबी है; एक विशिष्ट groupId
से संबंधित सभी संदेश। इस तरहसंग्रह से स्पष्ट रूप से सदस्यता समाप्त कैसे करें?
Meteor.publish("messages", function(groupId) {
return Messages.find({
groupId: groupId
});
});
और एक सदस्यता:: तो यह की तरह एक प्रकाशन के साथ शुरू कर दिया है
Deps.autorun(function() {
return Meteor.subscribe("messages", Session.get("currentGroupId"));
});
यह मैं मुसीबत में मिल गया है क्योंकि शुरू में currentGroupId
अपरिभाषित है लेकिन चौखट mongod संदेशों को खोजने के सीपीयू का प्रयोग करेंगे groupId == null
के साथ (हालांकि मुझे पता है कि कोई नहीं है)।
Meteor.publish("messages", function(groupId) {
if (groupId) {
return Messages.find({
groupId: groupId
});
} else {
return {}; // is this the way to return an empty publication!?
}
});
और/या करने के लिए सदस्यता के पुनर्लेखन के लिए:
Deps.autorun(function() {
if (Session.get("currentGroupId")) {
return Meteor.subscribe("messages", Session.get("currentGroupId"));
} else {
// can I put a Meteor.unsubscribe("messages") here!?
}
});
जो दोनों शुरू में मदद करता है
अब, मैं इस प्रकार के प्रकाशन को फिर से लिखने की कोशिश की। लेकिन जैसे ही currentGroupId
फिर से अपरिभाषित हो जाता है (क्योंकि उपयोगकर्ता एक अलग पृष्ठ पर नेविगेट करता है), mongod अभी भी अंतिम सदस्यता groupId
के लिए डेटाबेस की आवश्यकता में व्यस्त है। तो मैं एक प्रकाशन से सदस्यता कैसे ले सकता हूं जैसे कि मोंगोड पूछताछ बंद कर दिया गया है?
दुर्भाग्यवश, मुझे इस दावे को साबित करने के लिए कोई दस्तावेज नहीं मिला। एक संकेत की सराहना की जाएगी। – Dejan