sql >> Database teknologi >  >> NoSQL >> MongoDB

En mere elegant måde at håndtere filtreringsværdier i Angular App

For at få dette til at fungere, er det et spørgsmål om at tilføje noget mere betinget logik til, hvornår en værdi sendes via { $in: value } . Da fejlene, der dukkede op, var på grund af formateringsproblemer med { $in: value } Nøglen var at sikre, at dette kun udløses, når der er en værdi, der skal passeres.

Så i sidste ende, for at få dette til at fungere - uden at skulle sende en række af alle mulige værdier ind, hvilket ikke var en elegant eller effektiv løsning - ændrede jeg dette:

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

... til dette:

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

Hvad dette gør, er grundlæggende at sikre, at en matrix med mindst én værdi er tilgængelig, når { $in:value } udløses.

Den eneste anden nødvendige ændring var den, der involverede det, der udsendes, når en bruger har fravalgt alle værdier. Jeg håndterede det på denne måde:

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. Henter første dag i ugen fra ugenummer i mongodb

  2. Brugerdefinerede fejlmeddelelser med Mongoose

  3. Node.js, (Hej)Redis og multikommandoen

  4. MongoDB ikke lig med