sql >> Databáze >  >> NoSQL >> MongoDB

Elegantnější způsob, jak zvládnout filtrování hodnot v aplikaci Angular

Aby to fungovalo, je potřeba přidat nějakou další podmíněnou logiku, když je hodnota předána přes { $in: value } . Protože chyby, které se objevovaly, byly způsobeny problémy s formátováním s { $in: value } , klíčem bylo zajistit, aby se to spouštělo pouze tehdy, když existuje hodnota, která má být předána.

Aby to nakonec fungovalo – bez nutnosti předávat pole všech možných hodnot, což nebylo elegantní ani výkonné řešení – změnil jsem toto:

private processType(name: string, value: any, body)
{
    if (this.body[name] && !value) {
            delete this.body[name];
        } else {
            this.body[name] = { $in: value };
        }
}

... na toto:

private processType(name: string, value: any, body)
{
    if (this.body[name] && !value || this.body[name] && value.length < 1) {
            delete this.body[name];
        } else if (value) {
            this.body[name] = { $in: value };
        }
}

Tím je v podstatě zajištěno, že pole alespoň jedné hodnoty je dostupné, když je spuštěna { $in:hodnota }.

Jedinou další potřebnou změnou byla ta, která zahrnovala to, co se vyšle, když uživatel zruší výběr všech hodnot. Vyřešil jsem to takto:

private sendLangSelections(languageFilterOptions) {
    const origLangArray = ['English', 'Spanish', 'Mandarin'];
    if (languageFilterOptions)
        {
            let selectionsArray = this.languageFilterOptions.selection;
            let values = selectionsArray.map((a) => { return a.value; });
            if (values && values.length > 0)
                {
                    this.sendLanguage.emit(values);
                }
            else if (values && values.length < 1)
                {
                    this.sendLanguage.emit(this.obj = undefined);
                }
        }
}



  1. Jak pozastavit nebo obnovit úkol s celerem?

  2. Jak porovnat 2 pole v Spring Data MongoDB pomocí objektu dotazu

  3. Docker mongodb sdílet objem s mac os x

  4. Jak mohu vytvořit jedinečná ID pro vložené dokumenty v MongoDB?