MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Cara yang Lebih Elegan untuk Menangani Nilai Penyaringan di Aplikasi Sudut

Untuk membuat ini berfungsi, ini masalah menambahkan beberapa logika kondisional ketika nilai diteruskan melalui { $in: value } . Karena kesalahan yang muncul adalah karena masalah pemformatan dengan { $in: value } , kuncinya adalah memastikan ini dipicu hanya ketika ada nilai yang akan diteruskan.

Jadi, pada akhirnya, agar ini berfungsi - tanpa harus memasukkan semua nilai yang mungkin, yang bukan merupakan solusi yang elegan atau berkinerja baik - saya mengubah ini:

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

... untuk ini:

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

Apa yang dilakukan pada dasarnya adalah memastikan bahwa larik dengan setidaknya satu nilai tersedia saat { $in:value } dipicu.

Satu-satunya perubahan lain yang diperlukan adalah yang melibatkan apa yang dipancarkan ketika pengguna telah membatalkan pilihan semua nilai. Saya menanganinya, dengan cara ini:

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoError:Nama tahapan pipeline tidak dikenal:'$changeStream'

  2. Sumber sinkronisasi tidak memiliki kesalahan versi kompatibilitas fitur saat menambahkan anggota MongoDB 3.6 ke set replika 3.4

  3. batas jumlah koleksi dalam database

  4. Tidak dapat mengekstrak kunci geo, jenis GeoJSON tidak dikenal:{ koordinat:[ 13.42493130000003, 52.5074619999999 ]

  5. MongoDB $strLenBytes