के अंदर अपरिभाषित लौटाता है Meteor.publish()
फ़ंक्शंस में से एक में, this.userId
का मान undefined
है। मैं Meteor.userId()
पर कॉल नहीं कर सकता क्योंकि यह not available inside a publish function है। आपको अब userId
कैसे प्राप्त करना चाहिए?this.userId Meteor.publish
उत्तर
चार संभावनाएँ हैं:
में लॉग इन नहीं उपयोगकर्ता नहीं है
आप सर्वर से विधि कॉल कर रहे हैं, और वहाँ इस प्रकार कॉल के साथ जुड़े कोई उपयोगकर्ता हो जाएगा (। जब तक आप इसे किसी अन्य फ़ंक्शन से कॉल कर रहे हैं जिसमें उपयोगकर्ता अपने पर्यावरण से बंधेगा, जैसे किसी अन्य विधि या सब्सक्राइब फ़ंक्शन)।
आपके पास accounts-base पैकेज (या कोई भी एड-ऑन) स्थापित नहीं है। मैं केवल पूर्णता के लिए इसे शामिल कर रहा हूँ।
आप ES6 में एक तीर फ़ंक्शन का उपयोग कर रहे हैं।
Meteor.publish('invoices', function() { return invoices.find({by: this.userId}); });
ठीक काम करेगा, जबकिMeteor.publish('invoices',() => { return invoices.find({by: this.userId}); });
एक खाली कर्सर वापस कर देगा, क्योंकिthis
मेंuserId
संपत्ति नहीं होगी। ऐसा इसलिए होता है क्योंकि एक तीर फ़ंक्शन अपनेthis
,arguments
,super
, याnew.target
को बाध्य नहीं करता है।
तो यह निश्चित रूप से नहीं (2) है, क्या होता है जब आप Meteor.userId()
लोग इन तुरंत इससे पहले कि आप ग्राहक पर विधि फोन करना?
आपको इसके बजाय Meteor.userId() का उपयोग करना चाहिए।
यह कहता है "त्रुटि: Meteor.userId केवल विधि कॉल में ही बुलाया जा सकता है। प्रकाशित कार्यों में this.userId का उपयोग करें।" –
Meteor.publish ("my_channel", function() { var userId = this.userId; myFunction (userId); }); –
this.userId अनिर्धारित है –
FIXED:
import { Meteor } from 'meteor/meteor';
import { Roles } from 'meteor/alanning:roles';
import _ from 'lodash';
import { check } from 'meteor/check';
import Corporations from '../corporations';
Meteor.publish('corporations.list',() => {
const self = this.Meteor; // <-- see here
const userId = self.userId();
const user = self.user();
let filters = {};
if (user) {
if (!Roles.userIsInRole(userId, ['SuperAdminHolos'])) { // No Está en el Rol SuperAdminHolos
filters = { adminsEmails: { $in: _.map(user.emails, 'address') } };
}
return Corporations.find(filters);
} else return;
});
- 1. Meteor.publish एक समारोह
- 2. ES6 तीर समारोह Meteor.publish में इस के दायरे से बदल रहा है
- 3. एक उपयोगकर्ता के अंदर उपयोगकर्ता/उपयोगकर्ता आईडी को प्रकाशित करें
- 4. उल्का में, इस आतंक के बीच क्या अंतर है और नया उल्का फेंक दो। Meteor.publish में त्रुटि?
- 5. उल्का - सभी उपयोगकर्ताओं को व्यवस्थापक के लिए केवल
- 6. उल्का - व्यक्तिगत स्कोर पर क्रमबद्ध संग्रह प्रकाशित करें
- 7. उल्का सीमा के साथ प्रकाशित करने और तरह
- 8. मेटीर के खातों के माध्यम से फेसबुक उपयोगकर्ता चित्र से कैसे पूछें- फेसबुक?
- 9. यूआईडी कन्स्ट्रक्टर
- 10. उल्का संग्रह मोंगो को
- 11. उल्का: _id
- 12. हाइबरनेट: आईडी
- 13. ईबीन - समग्र प्राथमिक कुंजी जिसमें विदेशी कुंजी
- 14. क्या मेटर के पास संग्रह के लिए एक अलग क्वेरी है?
- 15. उल्का डेटाबेस कनेक्शन
- 16. संग्रह से स्पष्ट रूप से सदस्यता समाप्त कैसे करें?
- 17. उल्का - एक ही संग्रह में दो बार सदस्यता लें - परिणाम अलग रखें?
- 18. क्या curor.observe सर्वर प्रदर्शन धीमा करता है?
- 19. सुरक्षा के लिए कोड अनुबंधों का उपयोग किया जाना चाहिए?
- 20. एंड्रॉइड फ़ायरबेस अपडेट केवल कुछ फ़ील्ड
- 21. उल्का - संग्रह के लिए सिर्फ गिनती प्रकाशित करें
- 22. प्रकाशन कस्टम Meteor.user() फ़ील्ड्स
- 23. -ऑन पोस्टफिक्स के साथ तारों पर एक मोंगोडीबी क्वेरी सॉर्ट कैसे करें?</p> <pre><code>ownUnnamedPages = Entries.find({ author : this.userId, title : {$regex: /^unnamed-/ }}, {sort: { title: 1 }}).fetch() </code></pre> <p>निम्नलिखित सरणी हल कर देता है कि:
- 24. वसंत-डेटा-जेपीए का उपयोग करके मैं एक इकाई को कैसे अपडेट करूं?
- 25. OneToOne साझा कुंजी
- 26. आईडी के सेट के साथ संग्रह में केवल नवीनतम दस्तावेज़ कैसे खोजें
- 27. झिलमिलाहट के बिना उल्का में अंकन कैसे करें?
- 28. का उपयोग Meteor.methods और Meteor.call
- 29. उल्का: साधारण-टोडोस डेमो को कैसे पगेट करें?
- 30. मैं एक धीमी उल्का प्रकाशन का अनुकरण कैसे करूं?
हाँ , यह 2 था। मैंने 'var = this.userId' को बस 'Meteor.publish' से ऊपर सेट किया था, इसलिए इसे सर्वर से बुलाया जा रहा था। 'Meteor.publish' के अंदर चलने से इसे ठीक किया गया। धन्यवाद! –
इसके अलावा, पूर्णता के लिए, सुनिश्चित करें कि आप तीर फ़ंक्शन का उपयोग नहीं कर रहे हैं, यानी 'Meteor.publish (' चालान ', फ़ंक्शन() {वापसी invoices.find ({by: this.userId});}); ' ठीक से काम करेगा, जबकि 'Meteor.publish (' चालान ',() => {वापसी invoices.find ({by: this.userId});});' खाली कर्सर वापस कर देगा, क्योंकि इसमें कोई उपयोगकर्ता आईडी नहीं होगा। चूंकि एक तीर फ़ंक्शन "अपने स्वयं के, तर्क, सुपर, या new.target को बाध्य नहीं करता है"। –
@ElijahSaounkine धन्यवाद! ईएस 6 द्वारा बिट। – joshperry