2012-11-24 20 views
8

के साथ क्लाइंट पर सभी उपयोगकर्ताओं को सूचीबद्ध करना उल्का दस्तावेज के अनुसार, सभी उपयोगकर्ताओं को ऑटोपब्लिश पैकेज स्थापित होने पर सभी क्लाइंटों को प्रकाशित किया जाना चाहिए।उल्का

http://docs.meteor.com/#meteor_users

मैं autopublish पैकेज स्थापित किया है, लेकिन Meteor.users पर forEach का उपयोग कर केवल सूचीबद्ध करता है वर्तमान में उपयोगकर्ता के प्रवेश।

क्या कॉफ़ीस्क्रिप्ट का उपयोग करके ग्राहक पर सभी उपयोगकर्ताओं को सूचीबद्ध करने का एक और सही तरीका है?

+0

क्या यह दस्तावेज़ों में एक बग है? एक संबंधित बंद मुद्दा https://github.com/meteor/meteor/issues/517 – amirnissim

उत्तर

8

यदि आप ऑटो प्रकाशित उपयोग के बिना उन संग्रह सदस्यता ले

if Meteor.isServer 

    Meteor.publish null, -> 
     Meteor.users.find {}, 
      fields: 
       username: 1 
       profile: 1 

अगर आप आप

if Meteor.isServer 

    Meteor.publish 'users-by-selector', (options) -> 
     Meteor.users.find options, # options as selector like $in: name: 'john' 
      fields: # use fields to only publish specify fields you want to send. 
       username: 1 
       profile: 1 

if Meteor.isClient 

    Meteor.autosubscribe -> 
     options = Session.get 'your mongodb selector' 
     Meteor.subscribe 'users-by-selector', options, -> 
      console.log 'on Subscribe Complete Callback.' 
      if Meteor.users.find().count() 
       Session.set 'specifyUsersLoaded', true 
+0

आपका पहला स्निपेट काम करता है, हालांकि मुझे '' फ़ील्ड: '' '' '' '' '' '' '' '' '' '' '' '' ' सभी उपयोगकर्ता के लिए 'उपयोगकर्ता नाम' और '' '' '' '' 'खाली हैं। स्पष्ट रूप से एक उपयोगकर्ता स्वत: प्रकाशित नहीं होता है जब तक कि इसके स्वत: प्रकाशित क्षेत्रों में कोई मूल्य न हो। – danielsvane

+0

मुझे @danielsvane द्वारा उल्लिखित सीमा नहीं मिली। हालांकि, ध्यान देने योग्य एक बात यह है कि विभिन्न प्रदाता पैकेज विभिन्न डेटा संरचनाएं प्रदान करते हैं। जब आप इसके बारे में सोचते हैं तो यह समझ में आता है, लेकिन यदि आप इसके लिए तैयार नहीं हैं तो यह भ्रमित हो सकता है। उपरोक्त @ क्रैपथिंग्स कोड ('प्रोफाइल' और' उपयोगकर्ता नाम 'सहित) फेसबुक और' अकाउंट-पासवर्ड 'पैकेज दोनों के लिए उपयोगकर्ता नाम प्राप्त करने के लिए अच्छा काम करेगा। उपयोगकर्ता नाम को 'उपयोगकर्ता' रिकॉर्ड से प्राप्त करने के लिए, आपको 'user.username || की आवश्यकता होगी user.profile.name'। – rdickert

+29

कॉफीस्क्रिप्ट ग्रहण करने के लिए ग्रेट और सहायक उत्तर +1, लेकिन -1। प्रश्न कॉफीस्क्रिप्ट के रूप में टैग नहीं किया गया है। इसे Meteor.coffee –

9

यहाँ कर सकते हैं उल्का के Parties example से एक अंश है उन निर्दिष्ट सदस्यता के लिए चाहते हैं:

// in server.js 
Meteor.publish("directory", function() { 
    return Meteor.users.find({}, {fields: {emails: 1, profile: 1}}); 
}); 

// in client.js 
Meteor.subscribe("directory"); 
+0

उदाहरण अब और नहीं है, मैं टेम्पलेट में प्रत्येक उपयोगकर्ता को कैसे पुन: सक्रिय कर सकता हूं? –

+1

यहां यह है: https://github.com/meteor/meteor/tree/devel/examples/other/parties (कोड वही है, अपडेट किया गया लिंक) – amirnissim

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