आपका प्रश्न Meteor.userId()
. को भ्रमित करने लगता है और Meteor.user()
. ऐसा लगता है कि प्रश्न का मुख्य भाग पूर्व के बारे में पूछ रहा है जबकि विषय पंक्ति बाद के बारे में पूछ रही है। मैं दोनों को संबोधित करने की कोशिश करूंगा।
- सर्वर पर, एक प्रकाशन समारोह के भीतर,
Meteor.userId()
को कॉल करना याMeteor.user()
क्या गड़बड़ी पैदा करेगा . इसके बजाय,this.userId
. का उपयोग करें याMeteor.users.findOne(this.userId)
, क्रमश। हालांकि, ध्यान दें कि प्रकाशित फ़ंक्शन केवल तभी कॉल किया जाता है जब क्लाइंट सदस्यता लेता है। यदि आप चाहते हैं कि उपयोगकर्ता रिकॉर्ड बदलने पर प्रकाशन बदल जाए, तो आपकोobserve()
करना होगाMeteor.users.find(this.userId)
. द्वारा लौटाया गया कर्सर और रिकॉर्ड बदलने पर उचित कार्रवाई करें। -
सर्वर पर, जबकि एक विधि कॉल संसाधित किया जा रहा है,
Meteor.userId()
औरMeteor.user()
क्रमशः कॉल करने वाले उपयोगकर्ता की आईडी और उनके रिकॉर्ड के अनुरूप होगा। हालांकि, सावधान रहें किMeteor.user()
पर कॉल करें परिणामस्वरूप एक DB क्वेरी होगी क्योंकि वे हैं अनिवार्य रूप सेMeteor.users.findOne(Meteor.userId())
के बराबर ।सीधे एक विधि कॉल के भीतर, आप
this.userId
. का भी उपयोग कर सकते हैं इसके बजायMeteor.userId()
, लेकिन आपको महत्वपूर्ण प्रदर्शन अंतर देखने की संभावना नहीं है। जब सर्वर विधि कॉल प्राप्त करता है, तो यह उपयोगकर्ता की आईडी (और कुछ अन्य जानकारी) के साथ आपके विधि कार्यान्वयन को चलाता है एक विशेष स्लॉट में संग्रहीत फाइबर पर।Meteor.userId()
बस मौजूदा फाइबर पर स्लॉट से आईडी पुनर्प्राप्त करता है। यह तेज़ होना चाहिए।आमतौर पर
Meteor.userId()
. का उपयोग करने वाले कोड को रिफलेक्टर करना आसान होता हैthis.userId
. की तुलना में क्योंकि आपthis.userId
. का उपयोग नहीं कर सकते मेथड बॉडी के बाहर (उदा.this
आपके द्वारा विधि निकाय से कॉल किए गए फ़ंक्शन के भीतर 'userId' प्रॉपर्टी नहीं होगी) और आपthis.userId
का उपयोग नहीं कर सकते हैं ग्राहक पर। - क्लाइंट पर,
Meteor.userId()
औरMeteor.user()
त्रुटियों को नहीं फेंकेगा औरthis.userId
काम नहीं करेगा।Meteor.user()
को कॉल करता है अनिवार्य रूप सेMeteor.users.findOne(Meteor.userId())
, लेकिन चूंकि यह मिनी-मोंगो डीबी क्वेरी से मेल खाता है, इसलिए प्रदर्शन शायद चिंता का विषय नहीं होगा। हालांकि, सुरक्षा कारणों सेMeteor.user()
. द्वारा लौटाई गई वस्तु अधूरा हो सकता है (विशेषकर यदिautopublish
पैकेज स्थापित नहीं है)।