2012-11-14 15 views
5

मेरे पास मेरे कोड में Meteor.publish है, जो एक और फ़ंक्शन कॉल करता है, जो किसी अन्य को कॉल करता है, और इसी तरह। फिर, सबसे आंतरिक कार्य में, मुझे यह जानने की जरूरत है कि उपयोगकर्ता सक्रिय है।एक उपयोगकर्ता के अंदर उपयोगकर्ता/उपयोगकर्ता आईडी को प्रकाशित करें

Meteor.user() का उपयोग नहीं किया जा सकता है। यह कहता है

Meteor.userId केवल विधि कॉल में ही बुलाया जा सकता है। प्रकाशित कार्यों में this.userId का उपयोग करें।

और this.userId आंतरिक फ़ंक्शन के अंदर स्वीकार्य नहीं है।

तब क्या किया जा सकता है?

+0

Meteor.publish है जैसे कि यह कॉल कर सकते हैं (शून्य, function() {स्वयं = इस; DoSomething() {self.userId}}); – crapthings

+0

आंतरिक कार्यों को बाहरी लोगों के बाहर घोषित किया जाता है – zVictor

+2

विधियों में इस .userId के लिए सटीक एक ही प्रश्न पूछा जा सकता है। स्पष्ट रूप से ऐसा कुछ जो उल्का में इष्टतम नहीं है। – steph643

उत्तर

4

क्या आप this.userId को प्रकाशित विधि के भीतर एक चर में निर्दिष्ट नहीं कर सकते हैं और फिर उस चर को चारों ओर पास कर सकते हैं?

Meteor.publish("my_channel", function() { 
    var userId = this.userId; 
    myFunction(userId); 
}); 
+4

उपयोगकर्ता आईडी पास करना, जो * एक वैश्विक चर है, क्योंकि एकाधिक नेस्टेड फ़ंक्शन कॉल के पैरामीटर दर्दनाक और त्रुटि प्रवण है। इसलिए मूल सवाल है। – steph643

संबंधित मुद्दे