Jadi saya memilih jawaban yang mengatakan turun saja ke mongodb 2.2.33 karena saya mencobanya dan berhasil, tetapi kemudian saya merasa aneh tentang hanya menurunkan versi untuk memperbaiki masalah jadi saya menemukan solusi yang memungkinkan Anda untuk menyimpan versi>=3.0. Jika ada yang menemukan masalah ini dan masalahnya tidak memberikan referensi kosong seperti jawaban yang diterima, coba solusi ini.
Saat Anda berlari..
MongoClient.connect(db.url,(err,database) =>{ }
Dalam versi mongodb>=3.0, database
itu variabel sebenarnya adalah objek induk dari objek yang Anda coba akses dengan database.collection('whatever')
. Untuk mengakses objek yang benar, Anda perlu merujuk nama database Anda, bagi saya itu dengan melakukan
MongoClient.connect(db.url,(err,database) =>{
const myAwesomeDB = database.db('myDatabaseNameAsAString')
myAwesomeDB.collection('theCollectionIwantToAccess')
}
Ini memperbaiki kesalahan saya saat menjalankan server node.js saya, semoga ini membantu seseorang yang tidak hanya ingin menurunkan versi mereka.
(juga, jika Anda tidak tahu nama db Anda karena suatu alasan, lakukan saja console.log(database) dan Anda akan melihatnya sebagai atribut objek)
EDIT (Juni 2018):
Menurut ini, panggilan balik sebenarnya mengembalikan klien database yang terhubung, bukan database itu sendiri.
Oleh karena itu, untuk mendapatkan instance database, kita perlu menggunakan metode ini, yang mengambil dbName
. Dalam dokumentasi dikatakan If not provided, use database name from connection string.
, seperti yang disebutkan oleh @divillysausages di komentar di bawah.
Singkatnya, kita harus memanggil database.db().collection('theCollectionIwantToAccess');
jika dbName disediakan oleh url, di mana database
sebenarnya adalah client
untuk pemahaman yang lebih baik