sql >> Databasteknik >  >> NoSQL >> MongoDB

Ett mer elegant sätt att hantera filtreringsvärden i Angular App

För att få det här att fungera är det en fråga om att lägga till lite mer villkorad logik när ett värde skickas via { $in: value } . Eftersom felen som dök upp berodde på formateringsproblem med { $in: value } , nyckeln var att se till att detta utlöses endast när det finns ett värde som ska skickas.

Så, till slut, för att få det här att fungera - utan att behöva skicka in en rad med alla möjliga värden, vilket inte var en elegant eller prestandalös lösning - ändrade jag detta:

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

... till detta:

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

Vad detta gör är i princip att säkerställa att en array med minst ett värde är tillgänglig när { $in:value } utlöses.

Den enda andra nödvändiga ändringen var den som involverade vad som sänds ut när en användare har avmarkerat alla värden. Jag hanterade det på det här sättet:

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. Det gick inte att starta redis.service:Enheten redis-server.service är maskerad

  2. Relationell databasdesign till mongoDB/mongoose-design

  3. Node.js SSH Tunneling till MongoDB med Mongoose

  4. Mongoose uppdatera flera dokument uppdaterar ingenting