¿La reactividad del lado del cliente con Meteor?
Tengo una colección publicada en el servidor y suscrita automáticamente en el cliente. Me gustaría configurar el elemento 'seleccionado' en la sesión y hacer que la plantilla se actualice para mostrar solo el elemento seleccionado, pero parece que esto solo se puede hacer con un viaje de ida y vuelta al servidor (que es totalmente innecesario).
Común:
var Missions = new Meteor.Collection('missions');
Cliente:
Template.missionList.missions = function() {
var currMission = Session.get('selectedMission');
var searchMission = {};
if(currMission)
{
searchMission['_id'] = currMission;
}
return Missions.find(searchMission);
};
Template.missionList.events({
'click div.mission': function (e, t) {
Session.set('selectedMission',
this._id == Session.get('selectedMission') ? null : this._id
);
}
});
Template.mission.isSelected = function() {
return this._id == Session.get('selectedMission');
};
Meteor.autosubscribe(function () {
Meteor.subscribe("missions");
});
Servidor:
Meteor.publish('missions', function() {
// there are really some filters here, but removed for simplicity
return Missions.find();
});
Modelo:
<template name="missionList">
<div class="missionList">
{{#each missions}}
{{> mission}}
{{/each}}
</div>
</template>
<template name="mission">
<div class="mission{{#if isSelected}} selected{{/if}}">details</div>
</template>
Mi requerimiento es para elMissions.find()
enTemplate.missionList.missions
para filtrar los resultados en caché del lado del cliente, en lugar de volver a solicitar desde el servidor, pero parece que no puedo encontrar una marca o configuración que me permita decirle a minimongo que solo use los datos disponibles actualmente.
Tampoco estoy completamente seguro de si esto es lo que debería hacer. Comencé a usar jQuery para ocultar las misiones no seleccionadas, pero me convencí de Meteor y parece un ajuste natural utilizar los datos y la reactividad para impulsar la selección. / filtrado local.
¿Hay alguna forma de evitar el viaje de ida o de que lo estoy utilizando mal?