Takže jsem hlasoval pro odpověď, která říkala, že stačí přejít na mongodb 2.2.33, protože jsem to zkusil a fungovalo to, ale pak jsem se cítil divně, když jsem jen downgradoval za účelem vyřešení problému, takže jsem našel řešení, které vám umožňuje zachovat verzi>=3.0. Pokud někdo najde tento problém a jeho problém nebyl předán prázdným odkazem, jako je přijatá odpověď, vyzkoušejte toto řešení.
Když běžíš..
MongoClient.connect(db.url,(err,database) =>{ }
Ve verzi mongodb>=3.0, tato database
proměnná je ve skutečnosti nadřazeným objektem objektu, ke kterému se pokoušíte přistupovat pomocí database.collection('whatever')
. Chcete-li získat přístup ke správnému objektu, musíte uvést název vaší databáze, pro mě to bylo provedením
MongoClient.connect(db.url,(err,database) =>{
const myAwesomeDB = database.db('myDatabaseNameAsAString')
myAwesomeDB.collection('theCollectionIwantToAccess')
}
Tím byly opraveny mé chyby při spouštění mého serveru node.js, doufám, že to pomůže někomu, kdo nechce pouze downgradovat svou verzi.
(také, pokud z nějakého důvodu neznáte název své db, stačí vytvořit console.log(database) a uvidíte to jako atribut objektu)
EDIT (červen 2018):
Podle toho zpětné volání ve skutečnosti vrací připojeného klienta databáze namísto databáze samotné.
Proto, abychom získali instanci databáze, musíme použít tuto metodu, která vyžaduje dbName
. V dokumentaci bylo uvedeno If not provided, use database name from connection string.
, jak uvádí @divillysausages v komentářích níže.
Stručně řečeno, měli bychom zavolat database.db().collection('theCollectionIwantToAccess');
pokud dbName poskytuje url, kde je database
je ve skutečnosti client
pro lepší pochopení