2017-12-05 165 views
6

Bir mongo örneği oluşturmaya çalışıyorum ancak mongodb nodejs sürücüsünün yardımcı yöntemlerinden herhangi birine erişemiyorum.db.createCollection bir işlev değil

Mongo örneğim docker içinde çalışıyor ve bağlantı noktaları yerel bölgeme açıldı. W3Schools'da kopyalanan

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

Hata çalıştırmak yoluyla döndürülür ve hiçbir yöntemler db nesne üzerinde maruz kalmaktadır.

herhangi bir fikir?

+0

Eğer a'console.dir (db) koyabilir miyim komutuyla belirli bir sürümünü yükleyebilirsiniz '6. satırda, (db.createCollection'' önce) ve burada sonuç göster? – Elad

+0

[MongoDB nodeJS hatası] 'nın olası kopyası (https://stackoverflow.com/questions/47662220/mongodb-nodejs-error) – njLT

cevap

16

changelog göre mongodb 3.0 için artık yerine veritabanı nesnesini içeren bir istemci nesnesi olsun:

Yani sizin durumda mydb içinde, kullanmak istediğiniz veritabanını işaret db nesne gerekir. Bunu deneyin:

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

Zamanlama izin verdiği zaman doğru yanıt olarak işaretlenir. Db url yolu ile bence garip ama teşekkür ederim :) –

2

Bu sorunla karşılaşan siz değilsiniz. 3.0 mongo sürücüsünün bir hataya sahip olduğu ya da bunların geriye dönük uyumluluk değişikliklerini kırdığı görülmektedir. Burada bir göz atın: db.collection is not a function when using MongoClient v3.0

URL'ye DB adını kullanmak için,, MongoDB kaldırmak bağımlılıkları "mongodb": "^2.2.33" değiştirmek ve yeni bir sürümünü yüklemeye npm install yapmak gerekir.

Yoksa npm install [email protected] --save

+0

Eğer gerçekten soruya cevap olup olmadığını emin değilim – efekctive