2013-10-03 16 views
16

Vorrei eseguire una query in meteoriti e limitare il numero di campo tornò a solo 5. Ecco il mio codice:Come usare limite meteora correttamente

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; 

Tuttavia quando faccio questo, ho tutti i corsi che si adattano al selettore nel log della console e non solo 10 di quelli. Nel modello è tutto a posto e vengono visualizzati solo 10 corsi.

ho guardato a questa domanda: Limit number of results in Meteor on the server side?

ma non ha aiutato come io non sto usando specifiche _ID campi per i miei corsi, sto usando campi _id specifici, ma per altre collezioni però.

risposta

25

Attualmente, il server sta inviando l'intera raccolta di corsi e li stai filtrando a 10 sul lato client. Si può effettivamente creare un reattivo di sottoscrizione/pubblicazione per impostare il limite in modo dinamico, o si può solo limitare la quantità di record inviato sul server

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')); 

E quindi impostare il limite dinamico utilizzando un evento che chiama:

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

Grande risposta, ma il modello che utilizza i corsi non viene visualizzato quando la sessione cambia. Qualche idea sul perché possa essere? – Stefan

+5

Ho cercato la rete per ore per una soluzione prima di pubblicare commenti sopra. E un minuto dopo, ho trovato la soluzione: Deps.autorun (function() { Meteor.subscribe ("courses", Session.get ("limit")); }); – Stefan

Problemi correlati