2017-12-05 17 views
6

Tôi đang cố gắng tạo một cá thể mongo tuy nhiên tôi không thể truy cập bất kỳ phương thức trợ giúp nào từ trình điều khiển mongodb nodejs.db.createCollection không phải là hàm

Ví dụ mongo của tôi đang chạy trong đế và các cổng đã được mở cho địa phương của tôi.

TypeError: db.createCollection is not a function 
at /var/www/html/beacon/index.js:6:8 
at args.push (/var/www/html/beacon/node_modules/mongodb/lib/utils.js:431:72) 
at /var/www/html/beacon/node_modules/mongodb/lib/mongo_client.js:254:5 
at connectCallback (/var/www/html/beacon/node_modules/mongodb/lib/mongo_client.js:933:5) 
at /var/www/html/beacon/node_modules/mongodb/lib/mongo_client.js:794:11 
at _combinedTickCallback (internal/process/next_tick.js:73:7) 
at process._tickCallback (internal/process/next_tick.js:104:9) 

sao chép từ w3schools ...

var MongoClient = require('mongodb').MongoClient; 
var url = "mongodb://localhost:27017/mydb"; 

MongoClient.connect(url, function(err, db) { 
    if (err) throw err; 
    db.createCollection("customers", function(err, res) { 
     if (err) throw err; 
     console.log("Collection created!"); 
     db.close(); 
    }); 
}); 

Không có lỗi được trả về thông qua việc chạy, và không có phương pháp tiếp xúc trên đối tượng db.

bất kỳ ý tưởng nào?

+0

Bạn có thể đặt a'console.dir (db) 'trong dòng 6, (trước khi' db.createCollection') và hiển thị ở đây kết quả? – Elad

+0

Có thể trùng lặp của [MongoDB nodeJS error] (https://stackoverflow.com/questions/47662220/mongodb-nodejs-error) – njLT

Trả lời

16

Theo changelog cho MongoDB 3,0 bây giờ bạn có được một đối tượng khách hàng có chứa các đối tượng cơ sở dữ liệu thay vì:

Vì vậy, bạn cần đối tượng db trỏ đến cơ sở dữ liệu bạn muốn sử dụng, trong trường hợp mydb của bạn. Hãy thử điều này:

var url = "mongodb://localhost:27017/"; 
MongoClient.connect(url, function(err, db) { //here db is the client obj 
    if (err) throw err; 
    var dbase = db.db("mydb"); //here 
    dbase.createCollection("customers", function(err, res) { 
     if (err) throw err; 
     console.log("Collection created!"); 
     db.close(); //close method has also been moved to client obj 
    }); 
}); 
+0

Sẽ đánh dấu là câu trả lời đúng khi thời gian cho phép. Odd trong quan điểm của tôi với đường dẫn url db tuy nhiên cảm ơn bạn :) –

2

Bạn không phải là người đối mặt với vấn đề này. Dường như trình điều khiển mongo 3.0 có lỗi hoặc đây chỉ là những thay đổi tương thích ngược. Hãy xem ở đây: db.collection is not a function when using MongoClient v3.0

Để sử dụng tên DB trong URL, bạn cần phải gỡ bỏ cài đặt MongoDB, thay đổi để "mongodb": "^2.2.33" trong phụ thuộc và làm npm install để cài đặt phiên bản mới.

Hoặc bạn có thể cài đặt phiên bản cụ thể với lệnh npm install [email protected] --save

+0

Không chắc chắn nếu bạn đang thực sự trả lời câu hỏi – efekctive

Các vấn đề liên quan