Reaktywność tylko po stronie klienta z Meteor?

Mam kolekcję opublikowaną na serwerze i automatycznie subskrybowaną na kliencie. Chciałbym ustawić „wybraną” pozycję w sesji i zaktualizować szablon, aby wyświetlić tylko wybrany element, ale wygląda na to, że można to zrobić tylko w obie strony na serwerze (co jest całkowicie niepotrzebne).

Pospolity:

var Missions = new Meteor.Collection('missions');

Klient:

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");
});

Serwer:

Meteor.publish('missions', function() {
    // there are really some filters here, but removed for simplicity
    return Missions.find(); 
});

Szablon:

<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>

Moje wymaganie dotyczyMissions.find() wTemplate.missionList.missions aby filtrować wyniki buforowane po stronie klienta, zamiast ponownie żądać od serwera, ale nie mogę znaleźć flagi lub ustawień, które pozwolą mi powiedzieć minimongo, aby korzystał tylko z aktualnie dostępnych danych.

Nie jestem też do końca pewny, czy to właśnie powinienem robić, zacząłem używać jQuery, aby ukryć niewybrane misje, ale zaokrągliłem głowę Meteora i wydaje się, że naturalne jest wykorzystanie danych i reaktywności do wyboru napędu / filtrowanie lokalne.

Czy jest jakiś sposób na uniknięcie obiegu, czy po prostu używam go źle?

questionAnswers(1)

yourAnswerToTheQuestion