Ik voel me vooral geïnspireerd om dit te beantwoorden vanwege de DotA-referentie. :)
Dus als ik het probleem goed begrijp, zou het niet nodig moeten zijn om elke combinatie te controleren, maar eerder herhaaldelijk sleutels toe te voegen aan de query
object op basis van de inhoud van drie sessievariabelen. Ik denk dat het volgende logisch equivalent is aan uw returnFilterQuery
functie hierboven.
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);
};
Merk op dat isEmpty
kan een veiligere controle zijn dan length
voor het geval de sessievariabele geen array is.