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

Meteor - Mengapa saya harus menggunakan this.userId daripada Meteor.userId() bila memungkinkan?

Pertanyaan Anda tampaknya menggabungkan Meteor.userId() dan Meteor.user() . Tubuh pertanyaan tampaknya menanyakan tentang yang pertama sementara baris subjek menanyakan tentang yang terakhir. Saya akan mencoba membahas keduanya.

  1. Di server, dalam fungsi publikasikan, memanggil Meteor.userId() atau Meteor.user() akan menyebabkan kesalahan . Sebagai gantinya, gunakan this.userId atau Meteor.users.findOne(this.userId) , masing-masing. Namun, perhatikan bahwa fungsi publikasikan hanya dipanggil saat klien berlangganan. Jika Anda ingin publikasi berubah saat catatan pengguna berubah, Anda harus observe() kursor dikembalikan oleh Meteor.users.find(this.userId) dan mengambil tindakan yang tepat saat catatan berubah.
  2. Di server, saat pemanggilan metode sedang diproses, Meteor.userId() dan Meteor.user() akan sesuai dengan ID pengguna panggilan dan catatan mereka, masing-masing. Namun, perlu diketahui bahwa panggilan ke Meteor.user() akan menghasilkan kueri DB karena dasarnya setara dengan Meteor.users.findOne(Meteor.userId()) .

    Langsung dalam pemanggilan metode, Anda juga dapat menggunakan this.userId bukannya Meteor.userId() , tetapi Anda tidak akan melihat perbedaan performa yang signifikan. Saat server menerima panggilan metode, itu menjalankan implementasi metode Anda dengan ID pengguna (dan beberapa info lainnya) disimpan di slot tertentu pada serat. Meteor.userId() hanya mengambil ID dari slot pada serat saat ini. Itu harus cepat.

    Biasanya lebih mudah untuk memfaktorkan ulang kode yang menggunakan Meteor.userId() dari this.userId karena Anda tidak dapat menggunakan this.userId di luar badan metode (mis. this tidak akan memiliki properti 'userId' dalam fungsi yang Anda panggil dari badan metode) dan Anda tidak dapat menggunakan this.userId pada klien.

  3. Pada klien, Meteor.userId() dan Meteor.user() tidak akan menimbulkan kesalahan dan this.userId tidak akan berfungsi. Panggilan ke Meteor.user() adalah pada dasarnya setara dengan Meteor.users.findOne(Meteor.userId()) , tetapi karena ini sesuai dengan kueri DB mini-mongo, kinerja mungkin tidak akan menjadi masalah. Namun, untuk alasan keamanan, objek yang dikembalikan oleh Meteor.user() mungkin tidak lengkap (terutama jika autopublish paket tidak diinstal).


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Menambahkan Array BSON ke dokumen MongoDB 3.2 dan mengekstrak nilai kembali ( MongoCXX 3.2 ) ( C++ 11)

  2. cara menemukan string tertentu dalam pasangan nilai kunci di mongodb

  3. Kiat untuk Mengelola MongoDB dari Jarak Jauh

  4. Bagaimana cara mempertahankan MongoDB - data wadah Docker yang sedang berjalan di gambar baru?

  5. nodejs dapatkan hasil pencarian di mongodb