2017-12-05 1 views
6

mongo 인스턴스를 만들려고 시도하고 있지만 mongodb nodejs 드라이버의 도우미 메서드에 액세스 할 수 없습니다.db.createCollection이 함수가 아닙니다.

내 mongo 인스턴스가 도커 내에서 실행 중이며 포트가 로컬로 열렸습니다. W3 스쿨에서 복사

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) 

...

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(); 
    }); 
}); 

없음 오류는 실행을 통해 반환되지 않으며, 어떠한 방법은 DB 객체에 노출되지 않습니다.

어떤 아이디어가 있습니까?

+0

당신이 a'console.dir (DB)를 넣을 수 명령으로 특정 버전을 설치할 수는'라인 6 (db.createCollection''전) 여기에 결과를 보여? – Elad

+0

[MongoDB nodeJS 오류]의 가능한 복제본 (https://stackoverflow.com/questions/47662220/mongodb-nodejs-error) – njLT

답변

16

changelog에 따르면 MongoDB를 3.0 당신은 지금 대신 데이터베이스 개체를 포함하는 클라이언트 개체를 얻을 :

그래서 당신은 당신이 당신의 경우 MYDB에 사용할 데이터베이스를 가리키는 db 객체가 필요합니다. 사용해보기 :

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

타이밍에 맞으면 올바른 답으로 표시됩니다. db url 경로를 사용하여 제 의견으로는 이상하게 생각하지만 고맙습니다 :) –

2

당신은이 문제에 직면 해 있지 않습니다. 3.0 mongo 드라이버에 버그가 있거나 이것들이 이전 버전과의 호환성을 깨고있는 것 같습니다. 여기를보세요 : db.collection is not a function when using MongoClient v3.0

는 URL에 DB 이름을 사용하려면, MongoDB를 제거 의존성에 "mongodb": "^2.2.33"로 변경하고 새 버전을 설치 npm install 할 필요가있다.

아니면 npm install [email protected] --save

+0

실제로 질문에 답변하는 경우 확실하지 않습니다. – efekctive

관련 문제