Jag känner mig särskilt inspirerad att svara på detta på grund av DotA-referensen. :)
Så om jag förstår problemet rätt bör du inte behöva kontrollera varje kombination, utan snarare lägga till nycklar upprepade gånger i query
objekt baserat på innehållet i tre sessionsvariabler. Jag tror att följande logiskt motsvarar din returnFilterQuery
funktion ovan.
var returnFilterQuery = function() {
var query = {game: 'dota'};
var modifyQueryIfArray = function(key, sessionKey) {
var value = Session.get(sessionKey);
if (!_.isEmpty(value))
query[key] = {$in: value};
};
modifyQueryIfArray('gamemode', 'dotaMode');
modifyQueryIfArray('region', 'dotaRegion');
modifyQueryIfArray('skill', 'dotaSkill');
return Session.set('dotaFilter', query);
};
Observera att isEmpty
kan vara en säkrare kontroll än length
om sessionsvariabeln inte är en array.