MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

TypeError:db.collection nie jest funkcją

Więc głosowałem na odpowiedź, która mówiła, że ​​po prostu przejdź do mongodb 2.2.33, ponieważ próbowałem i zadziałało, ale potem poczułem się dziwnie, że po prostu obniżyłem wersję, aby naprawić problem, więc znalazłem rozwiązanie, które pozwala zachować wersję>=3.0. Jeśli ktoś znajdzie ten problem, a jego problem nie przekazał pustego odniesienia, takiego jak zaakceptowana odpowiedź, wypróbuj to rozwiązanie.

Kiedy biegasz...

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

W wersji mongodb>=3.0, ta database zmienna jest w rzeczywistości obiektem nadrzędnym obiektu, do którego próbujesz uzyskać dostęp za pomocą database.collection('whatever') . Aby uzyskać dostęp do właściwego obiektu, musisz odwołać się do nazwy swojej bazy danych, dla mnie zrobiłem to, wykonując

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

To naprawiło moje błędy podczas uruchamiania serwera node.js, mam nadzieję, że pomoże to komuś, kto nie chce tylko obniżyć swojej wersji.

(także, jeśli z jakiegoś powodu nie znasz swojej nazwy bazy danych, po prostu wykonaj console.log(baza danych), a zobaczysz ją jako atrybut obiektu)

EDYCJA (czerwiec 2018):

Zgodnie z tym wywołanie zwrotne faktycznie zwraca podłączonego klienta bazy danych, zamiast samej bazy danych.

Dlatego, aby uzyskać instancję bazy danych, musimy użyć tej metody, która przyjmuje dbName . W dokumentacji napisano If not provided, use database name from connection string. , jak wspomniał @divillysausages w komentarzach poniżej.

Krótko mówiąc, powinniśmy wywołać database.db().collection('theCollectionIwantToAccess'); jeśli nazwa dbName jest dostarczana przez adres URL, gdzie database jest w rzeczywistości client dla lepszego zrozumienia



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. $allElementsTrue . MongoDB

  2. $nin z $expr

  3. Jaka jest zaleta używania ObjectId zamiast zwykłego String?

  4. Licznik grup z MongoDB przy użyciu frameworka agregacji

  5. Mongodb - agregacja $push, jeśli warunkowa