Saya memiliki kelas pembungkus basis data yang membuat koneksi ke beberapa instance MongoDB:
async connect(connectionString: string): Promise<void> {
this.client = await MongoClient.connect(connectionString)
this.db = this.client.db()
}
Ini memberi saya peringatan:
(node: 4833) DeprecationWarning: parser string URL saat ini sudah tidak digunakan lagi, dan akan dihapus dalam versi yang akan datang. Untuk menggunakan parser baru, kirimkan opsi {useNewUrlParser: true} ke MongoClient.connect.
The connect()
Metode menerima MongoClientOptions
misalnya sebagai argumen kedua. Tetapi tidak memiliki properti yang disebut useNewUrlParser
. Saya juga mencoba mengatur properti-properti itu dalam string koneksi seperti ini: mongodb://127.0.0.1/my-db?useNewUrlParser=true
tetapi tidak berpengaruh pada peringatan tersebut.
Jadi bagaimana saya bisa mengatur useNewUrlParser
untuk menghapus peringatan itu? Ini penting bagi saya karena skrip harus dijalankan sebagai cron dan peringatan itu menghasilkan spam trash-mail.
Saya menggunakan mongodb
driver dalam versi 3.1.0-beta4
dengan @types/mongodb
paket yang sesuai di 3.0.18
. Keduanya merupakan penggunaan terbaru yang tersedia npm install
.
Penanganan masalah
Menggunakan versi driver mongodb yang lebih lama:
"mongodb": "~3.0.8",
"@types/mongodb": "~3.0.18"
beta
versi yang entah bagaimana dirilis pada npm selama akhir pekan. Jangan khawatir tentang hal itu sampai API benar-benar selesai. Anda melakukan hal yang benar menginstal versi stabil.Jawaban:
Periksa
mongo
versi Anda :Jika Anda menggunakan versi> = 3.1.0, ubah
mongo
file koneksi Anda ke ->atau file koneksi luwak Anda ke ->
Idealnya, ini adalah fitur versi 4, tetapi v3.1.0 dan di atasnya juga mendukungnya. Lihat MongoDB GitHub untuk detailnya.
sumber
Seperti dicatat,
3.1.0-beta4
pembebasan pengemudi "dilepaskan ke alam liar" sedikit lebih awal dengan penampilan. Rilis ini merupakan bagian dari pekerjaan yang sedang berlangsung untuk mendukung fitur-fitur yang lebih baru dalam rilis MongoDB 4.0 mendatang dan membuat beberapa perubahan API lainnya.Salah satu perubahan yang memicu peringatan saat ini adalah
useNewUrlParser
opsi, karena beberapa perubahan sekitar bagaimana lewat koneksi URI sebenarnya bekerja. Lebih lanjut tentang itu nanti.Sampai hal-hal "menetap", mungkin disarankan untuk "menyematkan" setidaknya ke versi minor untuk
3.0.x
rilis:Itu harus menghentikan
3.1.x
cabang yang diinstal pada instalasi "segar" ke modul simpul. Jika Anda sudah menginstal rilis "terbaru" yang merupakan versi "beta", maka Anda harus membersihkan paket-paket Anda (danpackage-lock.json
) dan pastikan Anda menabraknya ke3.0.x
rilis seri.Sedangkan untuk benar-benar menggunakan opsi URI koneksi "baru", batasan utama adalah untuk benar-benar menyertakan
port
pada string koneksi:Itu aturan yang lebih "ketat" dalam kode baru. Poin utama adalah bahwa kode saat ini pada dasarnya adalah bagian dari
mongodb
kode repositori "node-native-driver" (npm ), dan "kode baru" sebenarnya diimpor darimongodb-core
perpustakaan yang "menopang" driver node "publik".Inti dari "opsi" yang ditambahkan adalah untuk "memudahkan" transisi dengan menambahkan opsi ke kode baru sehingga parser yang lebih baru (sebenarnya berbasis di sekitar
url
) digunakan dalam kode menambahkan opsi dan menghapus peringatan penghentian, dan karenanya memverifikasi bahwa string koneksi Anda yang lewat benar-benar sesuai dengan apa yang diharapkan oleh parser baru.Di rilis mendatang parser 'legacy' akan dihapus dan kemudian parser baru akan menjadi apa yang digunakan bahkan tanpa opsi. Tetapi pada saat itu, diharapkan bahwa semua kode yang ada memiliki kesempatan yang cukup untuk menguji string koneksi yang ada terhadap apa yang diharapkan oleh pengurai baru.
Jadi jika Anda ingin mulai menggunakan fitur driver baru saat dirilis, maka gunakan
beta
rilis yang tersedia dan berikutnya dan idealnya pastikan Anda menyediakan string koneksi yang valid untuk parser baru dengan mengaktifkanuseNewUrlParser
opsi diMongoClient.connect()
.Jika Anda tidak benar-benar membutuhkan akses ke fitur yang berkaitan dengan pratinjau rilis MongoDB 4.0, maka sematkan versi ke a
3.0.x
seri seperti disebutkan sebelumnya. Ini akan berfungsi seperti yang didokumentasikan dan "menyematkan" ini memastikan bahwa3.1.x
rilis tidak "diperbarui" selama ketergantungan yang diharapkan sampai Anda benar-benar ingin menginstal versi stabil.sumber
npm install mongodb
menghasilkan "beta" (ditandai dengan jelas dalam string versi yang ditunjukkan dalam pertanyaan) diinstal karena ditandai sebagaistable
dalam repositori npm ketika itu seharusnya tidak. Ini memang kesalahan pada saat itu dan harus selalu dipertimbangkan sehingga jika ada rilis kode yang menunjukkanalpha
ataubeta
di dalam string versi ditandai dengan sama sebagai stabil. Secara alami waktu telah berlalu dan ini adalah fitur dalam rilis stabil sekarang, sampai (seperti disebutkan) akhirnya akan hilang.Kode yang disorot di bawah ini untuk koneksi luwak memecahkan peringatan untuk pengemudi luwak:
sumber
Tidak ada yang berubah. Lulus hanya dalam fungsi koneksi
{useNewUrlParser: true }
.Ini akan berhasil:
sumber
Anda perlu menambahkan
{ useNewUrlParser: true }
metode mongoose.connect ().sumber
Format string koneksi harus mongodb: // pengguna: kata sandi @ host: port / db
Sebagai contoh:
sumber
MongoClient.connect('mongodb://127.0.0.1:27017/yourDB', { useNewUrlParser: true } )
Bekerja juga.Anda hanya perlu mengatur hal-hal berikut sebelum menghubungkan ke database seperti di bawah ini:
Juga,
sumber
correct
olah itu bekerja untuk Anda. Itu juga bekerja untuk saya!Berikut ini berfungsi untuk saya
The
mongoose
versi5.8.10
.sumber
body-parser": "^1.19.0", "express": "^4.17.1", "mongoose": "^5.9.14"
Saya pikir Anda tidak perlu menambahkan
{ useNewUrlParser: true }
.Terserah Anda jika Anda sudah ingin menggunakan parser URL baru. Akhirnya peringatan akan hilang ketika MongoDB beralih ke parser URL baru mereka.
Seperti yang ditentukan dalam Format URI String Koneksi , Anda tidak perlu mengatur nomor port.
Menambahkan saja
{ useNewUrlParser: true }
sudah cukup.sumber
useNewUrlParser: true
, peringatan akan hilang. Tapi itu agak bodoh karena parameter tambahan ini akan menjadi usang setelah mongo beralih ke url parser baru mereka.Diperbarui untuk ECMAScript 8 / tunggu
Yang salah ECMAScript 8 demo kode MongoDB inc menyediakan juga menciptakan peringatan ini.
MongoDB memberikan saran berikut, yang tidak benar
Melakukan ini akan menyebabkan kesalahan berikut:
Sebagai gantinya , opsi harus disediakan untuk
new MongoClient
:Lihat kode di bawah ini:
sumber
Masalahnya dapat diatasi dengan memberikan nomor port dan menggunakan parser ini:
{useNewUrlParser: true}
Solusinya dapat:
Ini memecahkan masalah saya.
sumber
useNewUrlParser property
diconnect
, tapi solusi Anda membantu. jadi Terpilih!Contoh lengkap untuk Express.js, wadah panggilan API, dan pengiriman konten JSON adalah sebagai berikut:
sumber
Begini cara saya memilikinya. Petunjuk tidak muncul di konsol saya sampai saya memperbarui npm beberapa hari sebelumnya.
.connect memiliki tiga parameter, URI, opsi, dan err.
sumber
Kami menggunakan:
→ Ini memberikan kesalahan parser URL
Sintaks yang benar adalah:
sumber
Anda hanya perlu menambahkan
di dalam metode mongoose.connect.
sumber
Pekerjaan berikut untuk saya untuk versi 5.9.16
sumber
Baris-baris ini melakukan trik untuk semua peringatan penghinaan lainnya juga:
sumber
Saya menggunakan mlab.com sebagai basis data MongoDB. Saya memisahkan string koneksi ke folder berbeda bernama
config
dan di dalam file keys.js saya menyimpan string koneksi yang:Dan kode servernya
Anda perlu menulis {useNewUrlParser: true} setelah string koneksi seperti yang saya lakukan di atas.
Sederhananya, Anda perlu melakukan:
sumber
Saya menggunakan versi luwak 5.x untuk proyek saya. Setelah membutuhkan paket luwak, atur nilainya secara global seperti di bawah ini.
sumber
Jika
username
ataupassword
memiliki@
karakter, gunakan seperti ini:sumber