2014-10-29 22 views
6

Node.js, Express.js ve MongoDB ile basit bir site yapmaya çalışıyorum. Ben bu teknolojilere yeniyim ve sorun İşte veritabanını benim index.js dosyasında kod snippet'idir kurmak zorunda edilmiştir:Object # <MongoClient> 'open' yöntemi yok

var http = require('http'), 
    express = require('express'), 
    path = require('path'), 
    MongoClient = require('mongodb').MongoClient, 
    Server = require('mongodb').Server, 
    CollectionDriver = require('./collectionDriver').CollectionDriver; 

var app = express(); 
app.set('port', process.env.PORT || 3000); 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'jade'); 

var mongoHost = 'localHost'; 
var mongoPort = 27017; 
var collectionDriver; 

var mongoClient = new MongoClient(new Server(mongoHost, mongoPort)); 
mongoClient.open(function(err, mongoClient) { 
    if (!mongoClient) { 
     console.error("Error! Exiting... Must start MongoDB first"); 
     process.exit(1); 
    } 
    var db = mongoClient.db("MyDatabase"); 
    collectionDriver = new CollectionDriver(db); 
}); 

ben terminalde node index.js çalıştırmayı sonra, şöyle diyor:

js-bson: Failed to load c++ bson extension, using pure JS version 

/Users/username/dev/ga-final/index.js:31 
mongoClient.open(function(err, mongoClient) { //C 
      ^
TypeError: Object #<MongoClient> has no method 'open' 
at Object.<anonymous> (/Users/username/dev/ga-final/index.js:31:13) 
at Module._compile (module.js:456:26) 
at Object.Module._extensions..js (module.js:474:10) 
at Module.load (module.js:356:32) 
at Function.Module._load (module.js:312:12) 
at Function.Module.runMain (module.js:497:10) 
at startup (node.js:119:16) 
at node.js:906:3 

Sorun nedir? Neden açık çağrı yapamıyorum? Bunu düzeltmeme yardım edebilir misin? Teşekkürler!

+0

ping benim cevabımı kontrol edin :) – squiroid

cevap

13

:

Kod örneği daha onların gibi görünmesini sağlayın.

npm install [email protected] 
+1

Bu bir çekicilik gibi çalıştı ... teşekkürler @squiroid –

+0

Hepinize @SarasArya'ya teşekkürler :) – squiroid

+1

@practicemakesperfect Bu sizin için işe yararsa, lütfen cevap olarak işaretlemeyi düşünün. – chridam

5

mongodb docs'a bir bakın. mongoClient nesnesinin sizin düşündüğünüz gibi olmadığını ve bu nedenle neden bir open() yönteminin kullanılmadığını öğrenin. Bu ben mongodb sürücü sürümü 1.4 kullandıktan sonra o iyi çalışıyor MongoDB yeni sürümünü kullanıyorsanız, çünkü olabilir oluyor

var MongoClient = require('mongodb').MongoClient 
    , assert = require('assert'); 

// Connection URL 
var url = 'mongodb://localhost:27017/myproject'; 
// Use connect method to connect to the Server 
MongoClient.connect(url, function(err, db) { 
    assert.equal(null, err); 
    console.log("Connected correctly to server"); 

    db.close(); 
}); 
+0

Geriye dönük uyumluluk nedir? – Christophe

+1

Sanırım sorun buydu. Orijinal yayın, '.open()' yi destekleyen kütüphanenin eski sürümünü kullanıyordu, daha yeni sürüm ise '.connect' yerine. Lib yazarları onu geriye dönük olarak uyumlu tutmadı. – clay

İlgili konular