2014-08-30 85 views
0

我在連接到遠程mongoDB實例時遇到了一些問題。使用MongoClient無法連接到mongoDB

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

var app = express(); 
app.set('port', process.env.PORT || 7777); 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'jade'); 
app.use(express.bodyParser()); // <-- add 

var mongoHost = 'mongodb://username:[email protected]'; 
var mongoPort = 33170; 
var fileDriver; //<-- 
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("myDatabaseName"); 

    fileDriver = new FileDriver(db); //<-- 
    collectionDriver = new CollectionDriver(db); 
}); 

如果我開始我的本地機器上的節點,並輸入localhost:7777,我總是從上面得到以下錯誤在控制檯:

錯誤!退出...必須首先啓動MongoDB

可能是什麼原因?

+0

不,這是在端口33170一mongoLab服務器上運行;節點應用程序正在我的本地機器上的端口7777上運行。 – Marcel 2014-08-30 12:54:37

+0

好吧,我對你輸入localhost:7777的含義感到困惑。 'mongoClient.open'回調中包含'err'是什麼? – JohnnyHK 2014-08-30 12:59:58

+0

錯誤:無法連接到[mongodb:// username:[email protected]:33170] ...這很有道理,因爲我只能訪問:mongodb:// username:[email protected]: 33170/myDatabaseName。但我怎麼能確定呢? – Marcel 2014-08-30 13:03:32

回答

2

MongoClient上的文檔很混亂。通常最好使用MongoClient.connect而不是創建自己的MongoClient對象,並調用open,因爲您可以將數據庫名稱包含在connect調用的url參數中。

因此,像:

MongoClient.connect(
    'mongodb://username:[email protected]:33170/myDatabaseName', 
    function(err, db) { ... });