2012-11-26 20 views
5

द्वारा उल्का क्वैरी अन्य उपयोगकर्ताओं मैं निम्न आदेश Meteor.users.findOne({'emails.address': '[email protected]'});ईमेल

यह मोंगो खोल में काम करता है के साथ ईमेल द्वारा उन क्वेरी करने के लिए कोशिश कर रहा हूँ, लेकिन यह उल्का में अनिर्धारित दिखाता है।

कोई विचार?

अद्यतन

पता चला कि मैं अन्य उपयोगकर्ताओं को क्वेरी करने में सक्षम नहीं हूँ। जब मैं लॉग इन उपयोगकर्ता ईमेल से पूछता हूं तो वही क्वेरी काम करती है। तो सवाल अब मैं सभी उपयोगकर्ताओं पर कैसे पूछ सकता हूं?

उत्तर

12

डिफ़ॉल्ट रूप से, उल्का केवल उपयोगकर्ता में लॉग इन और आप कर सकते हैं, जैसा कि आप का उल्लेख है, चलने वाले उपयोगकर्ता के खिलाफ प्रश्नों प्रकाशित करती है।

Meteor.publish("allUsers", function() { 
    return Meteor.users.find({}); 
}); 

और ग्राहक पर उनकी सदस्यता ले:

Meteor.subscribe('allUsers'); 

यह भी ध्यान रखें कि आप सभी को प्रकाशित नहीं चाहते हो सकता है अन्य उपयोगकर्ताओं आप सर्वर पर उन्हें प्रकाशित करने के लिए है का उपयोग करने के खेतों ताकि आप निर्दिष्ट कर सकते हैं कि आप क्या प्रकाशित करने के लिए/प्रकाशित नहीं जैसे क्षेत्रों:

return Meteor.users.find({}, 
{ 
    // specific fields to return 
    'profile.email': 1, 
    'profile.name': 1, 
    'profile.createdAt': 1 
}); 

एक बार जब आप संग्रह प्रकाशित किया है, आप सभी उपयोगकर्ताओं के लिए प्रश्नों और उपयोग जानकारी चला सकते हैं।

+1

यह था। मैं पार्टियों के उदाहरण का पालन कर रहा था और उन्हें एहसास नहीं हुआ कि उन्होंने इसे प्रकाशित किया लेकिन उन्होंने इसे 'निर्देशिका' कहा। धन्यवाद! –

4

यह मददगार हो सकता है:

var text = "[email protected]"; 
Meteor.users.findOne({'emails.address': {$regex:text,$options:'i'}}); 

भी देखें Advance Queries

+1

आपका रेगुलर एक्सप्रेशन से इस तरह के 'बॉब के रूप में ईमेल पते के साथ उपयोगकर्ताओं के लिए काम नहीं करता है + 1 @ example.com'। – Luke

1

सबसे पहले आप उन के रूप में इस सवाल का जवाब ऊपर उल्लेख प्रकाशित करें और निम्न आदेश चलाने की आवश्यकता

Meteor.users.find({"emails": "[email protected]"}).fetch() 

या

Meteor.users.find({"emails.0": "[email protected]"}).fetch() 
+0

चूंकि मीटरी डिफ़ॉल्ट रूप से फ़ील्ड 'एड्रेस' के साथ सरणी में ई-मेल डालता है, तो बस निम्नलिखित को जोड़ा गया है और यह आकर्षण की तरह काम करता है: '' 'Meteor.users.findOne ({"email.0.address": "me @ example.com "}) '' '(उपरोक्त वर्णित सुरक्षा के लिए सीमित घोषित फ़ील्ड के साथ सभी उपयोगकर्ताओं को प्रकाशित करने के बाद, सदस्यता लें)। –