Så jeg stemte for svaret, der sagde, at man bare skulle gå ned til mongodb 2.2.33, fordi jeg prøvede det, og det virkede, men så følte jeg mig underlig med bare at nedgradere for at løse et problem, så jeg fandt løsningen, som giver dig mulighed for at beholde version>=3.0. Hvis nogen finder dette problem, og deres problem ikke blev sendt i en blank reference som det accepterede svar, så prøv denne løsning.
Når du løber...
MongoClient.connect(db.url,(err,database) =>{ }
I mongodb version>=3.0, den database
variabel er faktisk det overordnede objekt for det objekt, du forsøger at få adgang til med database.collection('whatever')
. For at få adgang til det korrekte objekt skal du referere til dit databasenavn, for mig var det ved at gøre
MongoClient.connect(db.url,(err,database) =>{
const myAwesomeDB = database.db('myDatabaseNameAsAString')
myAwesomeDB.collection('theCollectionIwantToAccess')
}
Dette løste mine fejl, da jeg kørte min node.js-server, forhåbentlig hjælper dette nogen, der ikke bare vil nedgradere deres version.
(også, hvis du af en eller anden grund ikke kender dit db-navn, skal du bare lave en console.log(database), og du vil se det som en objektattribut)
EDIT (juni 2018):
Ifølge dette returnerer tilbagekaldet faktisk databasens tilsluttede klient i stedet for selve databasen.
Derfor skal vi bruge denne metode for at få databaseinstansen, som tager et dbName
ind. . I dokumentationen stod der If not provided, use database name from connection string.
, som nævnt af @divillysausages i kommentarerne nedenfor.
Kort sagt bør vi kalde database.db().collection('theCollectionIwantToAccess');
hvis dbName er leveret af url, hvor database
er faktisk client
for bedre forståelse