Mi sento particolarmente ispirato a rispondere a questo a causa del riferimento DotA. :)
Quindi, se ho capito bene il problema, non dovresti aver bisogno di controllare ogni combinazione, ma piuttosto aggiungere ripetutamente chiavi alla query
oggetto basato sul contenuto di tre variabili di sessione. Penso che quanto segue sia logicamente equivalente al tuo returnFilterQuery
funzione sopra.
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);
};
Nota che isEmpty
potrebbe essere un controllo più sicuro di length
nel caso in cui la variabile di sessione non sia un array.