2013-10-03 15 views
16

मैं उल्का में एक प्रश्न चलाने के लिए और क्षेत्र की संख्या को सीमित करना चाहते हैं के लिए लौट आए केवल 5. यहाँ मेरी कोड है:उल्का सीमा का उपयोग कैसे करें ठीक से

var courses = Courses.find(
    { day_of_week : {$in: day_selector}, 
     price : {$gt : price_min, $lt : price_max}, 
     starts : {$gt : schedule_min}, 
     ends : {$lt : schedule_max}}, 
      {limit : 10}); 
console.log(courses); 
return courses; 

लेकिन जब मैं यह कर, मैं सभी मिल पाठ्यक्रम जो कंसोल लॉग में चयनकर्ता फिट बैठते हैं और न केवल उनमें से 10। टेम्पलेट में सब ठीक है और केवल 10 पाठ्यक्रम प्रदर्शित होते हैं।

मैं इस सवाल को देखा: Limit number of results in Meteor on the server side?

लेकिन यह मदद नहीं की, जैसा कि मैंने उपयोग नहीं कर रहा बारीकियों मेरी पाठ्यक्रमों के लिए खेतों _ id, मैं विशिष्ट _ id क्षेत्रों का उपयोग कर रहा है, लेकिन अन्य संग्रह के लिए हालांकि।

उत्तर

25

वर्तमान में, सर्वर आपके पाठ्यक्रमों के पूरे संग्रह को भेज रहा है और आप उन्हें क्लाइंट साइड पर 10 तक फ़िल्टर कर रहे हैं। आप वास्तव में एक प्रतिक्रियाशील सदस्यता/प्रकाशन सीमा गतिशील स्थापित करने के लिए बना सकते हैं या आप बस सर्वर

Meteor.publish('courses', function(limit) { 
    //default limit if none set 
    var dl = limit || 10; 
    return Posts.find({}, {limit: dl}); 
}); 

Meteor.subscribe('courses', Session.get('limit')); 

पर भेजा रिकॉर्ड की मात्रा को सीमित कर सकता है और फिर एक घटना है कि कॉल का उपयोग करके गतिशील सीमा निर्धारित:

Session.set('limit', 5); 
+0

ग्रेट उत्तर, लेकिन पाठ्यक्रम का उपयोग करते समय पाठ्यक्रम का उपयोग करने वाले टेम्पलेट को प्रस्तुत नहीं किया जाता है। कोई विचार क्यों हो सकता है? – Stefan

+5

मैं ऊपर टिप्पणी पोस्ट करने से पहले समाधान के लिए घंटों के लिए नेट खोज रहा हूं। और मैंने एक मिनट बाद, मुझे समाधान मिला: Deps.autorun (फ़ंक्शन() { Meteor.subscribe ("पाठ्यक्रम", सत्र.जेट ("सीमा")); }); – Stefan

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