MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

TypeError:db.collection не е функция

Така че гласувах за отговора, който казваше просто да сляза до mongodb 2.2.33, защото го пробвах и работи, но след това се почувствах странно, че просто понижавам, за да коригирам проблем, така че намерих решението, което ви позволява да запазите версия>=3.0. Ако някой открие този проблем и проблемът му не е бил предаван в празна препратка като приетия отговор, изпробвайте това решение.

Когато тичаш...

MongoClient.connect(db.url,(err,database) =>{ }

Във версия на mongodb>=3.0, тази database променливата всъщност е родителският обект на обекта, до който се опитвате да получите достъп с database.collection('whatever') . За да получите достъп до правилния обект, трябва да посочите името на вашата база данни, за мен това беше чрез правене

MongoClient.connect(db.url,(err,database) =>{ 
  const myAwesomeDB = database.db('myDatabaseNameAsAString')
  myAwesomeDB.collection('theCollectionIwantToAccess')
}

Това поправи грешките ми при стартиране на моя сървър node.js, надявам се това да помогне на някой, който не просто иска да понижи версията си.

(също, ако не знаете името на вашата db по някаква причина, просто направете console.log(database) и ще го видите като атрибут на обект)

РЕДАКТИРАНЕ (юни 2018 г.):

Според това обратното извикване всъщност връща свързания клиент на базата данни, вместо самата база данни.

Следователно, за да получим екземпляра на базата данни, трябва да използваме този метод, който приема dbName . В документацията пишеше If not provided, use database name from connection string. , както е споменато от @divillysausages в коментарите по-долу.

Накратко, трябва да извикаме database.db().collection('theCollectionIwantToAccess'); ако dbName е предоставено от url, където database всъщност е client за по-добро разбиране



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как лесно да управлявате актуализации на база данни и корекции за сигурност

  2. Какво е Профил? и уеб и работник

  3. Преобразуване на съхранена дата от монго обратно в милисекунди от епохата на Unix при зареждане?

  4. MongoDB – Аргументът на $size трябва да е масив, но е от тип:EOO / липсва

  5. Как да върнете само стойност на поле в mongodb