मान लीजिए मेरे पास एक उल्का संग्रह है जिसे GameStatus
कहा जाता है। मेरे पास अलग-अलग भूमिकाओं वाले उपयोगकर्ता हैं, लेकिन मैं सभी उपयोगकर्ताओं के लिए गेमस्टैटस संग्रह प्रकाशित करता हूं। मैं बस सर्वर में निम्नलिखित/publications.coffeeउल्का ढूंढें एक प्रश्न टेम्पलेट सहायक में अपरिभाषित एक क्वेरी देता है। अन्य टेम्पलेट हेल्पर्स में, एक ही क्वेरी अच्छी तरह से काम करती है
Meteor.publish 'gamestatus', ->
GameStatus.find()
का उपयोग भूमिकाओं ('एस' और 'बी') मुझे कोई समस्या नहीं है जब मैं निम्नलिखित खाका सहायक का उपयोग किया है के दो के लिए (फाइल में परिभाषित क्लाइंट/विचारों/seller.coffee और क्लाइंट/विचारों/buyer.coffee)
currentRound: ->
return GameStatus.findOne().currentRound
इन के लिए मैं निम्न त्रुटि कभी नहीं मिलता है।
Uncaught TypeError: Cannot read property 'currentRound' of undefined
लेकिन एक और भूमिका ('व्यवस्थापक') के लिए, एक ही टेम्पलेट सहायक (फ़ाइल क्लाइंट/विचारों/admin.coffee में परिभाषित) का उपयोग करके उपरोक्त शो Uncaught TypeError देता है। यह काम करता है अगर मैं इसके बजाय लिखता हूं:
currentRound: ->
return GameStatus.findOne()?.currentRound
मुझे समझ में आता है कि यह क्यों काम करता है। मुझे लगता है कि संग्रह लोड होने पर संग्रह पहले उपलब्ध नहीं है, फिर यह उपलब्ध हो जाता है। लेकिन यह ऊपर दिखाए गए अन्य टेम्पलेट्स के लिए क्यों नहीं होता है?
अगर कोई इसे स्पष्ट करने में मदद कर सकता है तो वास्तव में सराहना करेंगे।
जब आप संग्रह की सदस्यता लेते हैं, तो कॉल में वापस कंसोल पर कुछ लॉग इन करें ताकि आप जान सकें कि यह कब उपलब्ध है, और कॉल के साथ वही काम करें जो विफल हो रहा है। इस तरह आप अपनी परिकल्पना का परीक्षण कर सकते हैं। –
@ एमआरडी क्या आप कृपया मुझे एक उदाहरण दे सकते हैं? मुझे लॉग इन करना चाहिए जो सदस्यता को उपलब्ध होने पर मुझे जानने में मदद करेगा। ऐसा लगता है कि यह केवल इस विशिष्ट भूमिका के लिए है कि वे शुरुआत में उपलब्ध नहीं हैं। – Curious2learn
आप अपनी सदस्यता के लिए ऐसा कुछ करना चाहते हैं https://gist.github.com/devonbarrett/b698c10cc427ee2c1811 और उसके बाद वर्तमान राउंड फ़ंक्शन के लिए कुछ समान लॉग करें और देखें कि संग्रह तैयार होने से पहले इसे निकाल दिया गया है –