Dus ik stemde voor het antwoord dat zei om gewoon naar mongodb 2.2.33 te gaan omdat ik het probeerde en het werkte, maar toen voelde ik me raar om gewoon te downgraden om een probleem op te lossen, dus vond ik de oplossing waarmee je versie>=kunt behouden 3.0. Als iemand dit probleem vindt en zijn probleem niet in een blanco referentie zoals het geaccepteerde antwoord werd doorgegeven, probeer dan deze oplossing.
Als je rent..
MongoClient.connect(db.url,(err,database) =>{ }
In mongodb-versie>=3.0, That database
variabele is eigenlijk het bovenliggende object van het object dat u probeert te benaderen met database.collection('whatever')
. Om toegang te krijgen tot het juiste object, moet je naar je databasenaam verwijzen, voor mij was dat door te doen
MongoClient.connect(db.url,(err,database) =>{
const myAwesomeDB = database.db('myDatabaseNameAsAString')
myAwesomeDB.collection('theCollectionIwantToAccess')
}
Dit loste mijn fouten op bij het uitvoeren van mijn node.js-server, hopelijk helpt dit iemand die niet alleen zijn versie wil downgraden.
(ook, als je je db-naam om de een of andere reden niet weet, doe dan gewoon een console.log(database) en je zult het zien als een objectattribuut)
BEWERKEN (juni 2018):
Volgens dit retourneert de callback eigenlijk de verbonden client van de database, in plaats van de database zelf.
Om de database-instantie te krijgen, moeten we daarom deze methode gebruiken, die een dbName
inneemt . In de documentatie stond If not provided, use database name from connection string.
, zoals vermeld door @divillysausages in de reacties hieronder.
Kortom, we zouden database.db().collection('theCollectionIwantToAccess');
moeten aanroepen als de dbName wordt geleverd door url, waarbij de database
is eigenlijk client
voor een beter begrip