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

Mengapa hasOwnProperty model luwak mengembalikan false ketika properti memang ada?

Itu karena objek dokumen yang Anda dapatkan dari luwak tidak mengakses properti secara langsung. Ini menggunakan rantai prototipe karenanya hasOwnProperty mengembalikan false (saya sangat menyederhanakan ini).

Anda dapat melakukan salah satu dari dua hal:gunakan toObject() untuk mengubahnya menjadi objek biasa dan kemudian cek Anda akan berfungsi apa adanya:

var userPOJO = User.toObject();
if ( !(userPOJO.hasOwnProperty('local') && userPOJO.local.hasOwnProperty('password')) ) {...}

ATAU Anda bisa langsung memeriksa nilainya:

if ( !(User.local && User.local.password) ) {...}

Karena tidak ada properti yang memiliki nilai falsy, maka properti tersebut harus berfungsi untuk pengujian jika diisi.

EDIT:Pemeriksaan lain yang saya lupa sebutkan adalah menggunakan get . bawaan Mongoose metode:

if (!User.get('local.password')) {...}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Memasukkan data ke array bersarang di mongodb

  2. MongoDB melepas beberapa array

  3. Hasil MapReduce tampaknya terbatas pada 100?

  4. MongoDB.Driver.Builders cara mengelompokkan dan mendapatkan rata-rata

  5. Enum di MongoDB