MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

TypeError:db.collection không phải là một hàm

Vì vậy, tôi đã bỏ phiếu cho câu trả lời nói rằng chỉ cần chuyển xuống mongodb 2.2.33 vì tôi đã thử và nó hoạt động, nhưng sau đó tôi cảm thấy kỳ lạ khi chỉ hạ cấp để khắc phục sự cố vì vậy tôi đã tìm ra giải pháp cho phép bạn giữ phiên bản> =3.0. Nếu bất kỳ ai tìm thấy vấn đề này và vấn đề của họ không chuyển sang một tham chiếu trống như câu trả lời được chấp nhận, hãy thử giải pháp này.

Khi bạn chạy ..

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

Trong phiên bản mongodb> =3.0, database đó biến thực sự là đối tượng mẹ của đối tượng mà bạn đang cố gắng truy cập bằng database.collection('whatever') . Để truy cập đúng đối tượng, bạn cần tham chiếu tên cơ sở dữ liệu của mình, đối với tôi đó là do

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

Điều này đã sửa lỗi của tôi khi chạy máy chủ node.js của tôi, hy vọng điều này sẽ giúp ích cho ai đó không chỉ muốn hạ cấp phiên bản của họ.

(ngoài ra, nếu bạn không biết tên db của mình vì lý do nào đó, chỉ cần tạo console.log (cơ sở dữ liệu) và bạn sẽ thấy nó như một thuộc tính đối tượng)

CHỈNH SỬA (tháng 6 năm 2018):

Theo điều này, lệnh gọi lại thực sự trả về máy khách được kết nối của cơ sở dữ liệu, thay vì chính cơ sở dữ liệu.

Do đó, để lấy thể hiện cơ sở dữ liệu, chúng ta cần sử dụng phương thức này, phương thức này lấy một dbName . Trong tài liệu có ghi If not provided, use database name from connection string. , như được @divillysausages đề cập trong phần nhận xét bên dưới.

Tóm lại, chúng ta nên gọi database.db().collection('theCollectionIwantToAccess'); nếu dbName được cung cấp bởi url, nơi database thực sự là client để hiểu rõ hơn



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. DbRef với Mongoose - mongoose-dbref hay dân cư?

  2. mongodb TTL không xóa tài liệu

  3. Truy vấn trình điều khiển Node.js mongodb async / await

  4. Trả về các phần tử mảng bên trong từ nhiều tài liệu ở dạng đã sắp xếp

  5. Mongo:đếm số lần xuất hiện từ trong một bộ tài liệu