Så jag röstade på svaret som sa att man bara skulle gå ner till mongodb 2.2.33 eftersom jag provade det och det fungerade, men sedan kände jag mig konstigt att bara nedgradera för att fixa ett problem så jag hittade lösningen som gör att du kan behålla version>=3.0. Om någon hittar det här problemet och deras problem inte skickades i en tom referens som det godkända svaret, prova den här lösningen.
När du springer...
MongoClient.connect(db.url,(err,database) =>{ }
I mongodb version>=3.0, den där database
variabeln är faktiskt det överordnade objektet för objektet du försöker komma åt med database.collection('whatever')
. För att komma åt rätt objekt måste du referera till ditt databasnamn, för mig var det genom att göra
MongoClient.connect(db.url,(err,database) =>{
const myAwesomeDB = database.db('myDatabaseNameAsAString')
myAwesomeDB.collection('theCollectionIwantToAccess')
}
Detta fixade mina fel när jag körde min node.js-server, förhoppningsvis hjälper det någon som inte bara vill nedgradera sin version.
(också, om du inte känner till ditt db-namn av någon anledning, gör bara en console.log(databas) så ser du det som ett objektattribut)
EDIT (juni 2018):
Enligt detta returnerar callbacken faktiskt databasens anslutna klient istället för själva databasen.
För att få databasinstansen måste vi därför använda den här metoden, som tar in ett dbName
. I dokumentationen stod det If not provided, use database name from connection string.
, som nämnts av @divillysausages i kommentarerna nedan.
Kort sagt, vi borde anropa database.db().collection('theCollectionIwantToAccess');
om dbName tillhandahålls av url, där database
är faktiskt client
för bättre förståelse