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

Bagaimana Anda mengakses atribut objek yang ditanyakan dari Mongo di Meteor

find metode mengembalikan kursor, bukan objek atau array. Untuk mengakses objek, Anda harus mengambilnya dari kursor

var skill = Skills.find(Session.get('selected_skill')).fetch()[0];

atau dapatkan langsung dengan findOne :

var skill = Skills.findOne(Session.get('selected_skill'));

Kemudian Anda dapat menggunakannya sama seperti objek js lainnya:

console.log(skill.mana);
skill._cache = {cooldown: true};

Ingatlah bahwa di sisi klien, metode pengumpulan seperti find adalah non-blocking. Mereka mengembalikan apa pun yang dimiliki Meteor dalam cache, belum tentu apa yang ada di db sisi server. Itulah mengapa Anda harus selalu menggunakannya dalam konteks reaktif, atau memastikan bahwa semua data telah diambil sebelum eksekusi (jangan khawatir tentang yang terakhir sampai Anda fasih dengan Meteor, mulailah dengan cara pertama).

Juga, Anda perlu mengingat bahwa karena ini, findOne dan find.fetch dapat mengembalikan null / array kosong, bahkan ketika elemen yang sesuai dalam db (tetapi belum di-cache). Jika Anda tidak memperhitungkannya dalam fungsi reaktif, Anda akan mengalami kesalahan.

Template.article.slug = function() {
    var article = Articles.findOne(current_article);
    if(!article) return '';
    return slugify(article.title);
};

Jika kita tidak lolos dari fungsi dengan if(!article) , ekspresi article.title akan menimbulkan kesalahan dalam perhitungan pertama, seperti article akan tidak terdefinisi (dengan asumsi itu tidak di-cache sebelumnya).

Saat Anda ingin memperbarui database dari sisi klien, Anda hanya dapat mengubah satu item per waktu, dan Anda harus merujuk ke item dengan _id-nya . Ini karena alasan keamanan. Baris Anda untuk ini baik-baik saja:

Skills.update(Session.get('selected_skill'), {$inc: {mana: 1}});

alert() adalah fungsi yang mengembalikan tidak ditentukan apa pun yang Anda berikan.

alert(42); // -> undefined

Secara umum, jaraknya jauh lebih baik untuk men-debug dengan console.log dibandingkan dengan alert .




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoose tidak membaca dari database sekunder Mongo

  2. Mengambil panjang daftar di MongoDB

  3. Kueri di mana jumlah dua bidang kurang dari nilai yang diberikan

  4. Apa perbedaan antara menyimpan dan menyisipkan di Mongo DB?

  5. Luwak:mpromise (perpustakaan janji default luwak) tidak digunakan lagi