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

Bisakah Meteor menangani data yang diperbarui secara eksternal langsung ke database MongoDB dengan benar?

Meteor dikonfigurasi untuk menghubungkan ke database mongo eksternal . Anda memiliki paket mongo pada aplikasi pengembangan lokal tetapi itu hanya untuk kenyamanan dan integrasi yang mudah.

Dalam produksi, Anda harus selalu menghubungkan Meteor ke instance Mongo yang sedang berjalan menggunakan MONGO_URL variabel lingkungan .

Bonus:Anda dapat mengatur MONGO_URL bahkan dalam mode dev untuk terhubung ke db tertentu dalam mode dev. Ketahuilah bahwa Anda dapat CRUD semua yang ada di db ini, gunakan dengan hati-hati.

Di bawah kap Meteor menggunakan driver node mongo. Anda pada dasarnya dapat menggunakan semua API driver ini (lihat postingan ini untuk detail tentang cara memanggil metode asli Mongo)

Dengan sistem publikasi / langganan Meteor Anda pada dasarnya mengontrol data apa yang dipublikasikan ke klien. Publikasi berjalan setiap kali data berubah (mirip dengan pola pengamat).

Jika semua klien Anda berlangganan data koleksi, mereka akan mendapatkan pembaruan, setelah koleksi diperbarui. Dan sekarang datang ke fitur yang paling Anda inginkan:ini juga berfungsi jika data ini diperbarui oleh beberapa sumber eksternal.

Ini juga bekerja dengan interval pembaruan yang sangat cepat. Saya mengerjakan proyek baru-baru ini di mana sejumlah besar data telah diperbarui melalui python pada koleksi Mongo-DB. Aplikasi Meteor mendengarkannya dan menampilkan data ke klien dalam "waktu nyata" (atau apa yang dianggap pengguna sebagai waktu nyata).

Namun, ada beberapa jebakan dan ada baiknya untuk mengetahuinya terlebih dahulu.

  1. Meteor membuat dokumen dengan _id bertipe string dan bukan Mongo.ObjectID . Namun ia mampu membaca dan menulisnya jika Anda menggunakannya dengan benar .

  2. Meteor membungkus koleksi dengan API sendiri yang mengintegrasikan koleksi terbaik dengan fibers lingkungan berbasis. Jika Anda perlu menggunakan fungsionalitas di luar, baca di sini dan di sini .

  3. Kursor yang dikembalikan berperilaku sedikit berbeda tetapi seperti Koleksi, ada juga semua fungsi asli yang tersedia jika Anda menerima kursor dari rawCollection

  4. Periksa kembali tipe data yang Anda gunakan pada koleksi Anda. Misalnya tetap dengan jenis Tanggal yang sama (seperti ISODate) sehingga tidak ada kesalahan yang tidak diinginkan setelah pembaruan. Ada juga rekan Meteor untuk mongoose bernama simpl-schema (paket npm ) yang merupakan cara yang baik untuk menjaga struktur pada koleksi Anda.

Ringkasnya, jika Anda mempertimbangkan sebagian besar panduan Meteor dan dokumen API, Anda harus berada di jalur yang baik karena integrasi koleksi yang diperbarui secara eksternal biasanya berjalan dengan sangat baik dan sebagian besar tentang memahami sistem pub/sub untuk menjalankannya.

Sunting:

Ya, tetapi Anda harus mengetahui kueri yang berbeda. Jika dokumen (dibuat secara eksternal) memiliki nilai berikut:

{ "_id" : ObjectId("4ecc05e55dd98a436ddcc47c") }

Maka Anda harus mengubah kueri (Meteor) Anda dari

collection.findOne("4ecc05e55dd98a436ddcc47c") // returns undefined

ke

collection.findOne({ "_id" : new Mongo.ObjectID("4ecc05e55dd98a436ddcc47c") }) // returns { _id: ObjectID { _str: '4ecc05e55dd98a436ddcc47c' } }

Pola yang sama berfungsi untuk membuat dokumen. Alih-alih

collection.insert({ foo:'bar' })

Anda melewati ObjectID yang baru dibuat:

collection.insert({ foo:'bar', _id: new Mongo.ObjectID() })

Jika Anda membuat dokumen di Meteor dengan metode di atas, Anda tidak perlu khawatir tentang _id menjadi sebuah String.

Selain itu, dokumen sebagaimana mestinya (lihat jembatan format data ). Namun, jika ada pengecualian yang Anda temukan yang belum disebutkan di sini, jangan ragu untuk berkomentar karena ini mungkin juga penting bagi pengguna lain.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Pengurai BASH BSON

  2. Kelompokkan menurut interval tanggal

  3. Meminta nilai nol di MongoDB

  4. Menyiapkan Ekstensi Mongo untuk Kerangka Axon pada boot musim semi

  5. atom MongoDB findOrCreate:findOne, masukkan jika tidak ada, tetapi jangan perbarui