2013-01-21 40 views
4

我在Cloud9中的連接數據庫MongoDB有問題 請幫忙解決這個問題!如何連接Cloud9中的MongoDB?

var MongoClient = require("mongodb").MongoClient; 
var port = process.env.PORT; 
var ip = process.env.IP; 
MongoClient.connect("mongodb://"+ip+":"+port+"/test",function(error,db){ 
     if(!error){ 
     console.log("We are connected"); 
     } 
     else{ 
     console.dir(error); //failed to connect to [127.4.68.129:8080]    
     } 
}); 

輸出:

Running Node Process 
Your code is running at 'http://demo-project.alfared1991.c9.io'. 
Important: use 'process.env.PORT' as the port and 'process.env.IP' as the host in your scripts! 
[Error: failed to connect to [127.4.68.129:8080]] 
+1

我想@alfared詢問如何連接到Cloud9的本地MongoDB實例,並沒有得到正確的答覆。我試圖編輯該問題,但該編輯未獲批准。 –

回答

2

process.env.PORTprocess.env.IP是您的應用程序的端口和IP地址,而不是你的數據庫。你需要從你的MongoDB提供者中取出你的Mongo連接字符串。

下面是來自Node.js homepage修改爲使用這兩個環境變量的hello world示例。

var http = require('http'); 
http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    res.end('Hello World\n'); 
}).listen(process.env.PORT || 1337, process.env.IP || '127.0.0.1'); 
+0

還有一些具體的例子嗎? 我的意思是,我首先需要創建/運行一個Web服務器?我不明白 – alfared

1

對於其他人誰運行到這個問題,解決方法是在這裏:https://docs.c9.io/setting_up_mongodb.html

MongoDB是在CLOUD9工作區預裝。運行此:

$ mkdir data 
$ echo 'mongod --bind_ip=$IP --dbpath=data --nojournal --rest "[email protected]"' > mongod 
$ chmod a+x mongod 

要啓動MongoDB的過程中,運行:

$ ./mongod 

然後 '跑' 你的Node.js應用程序的腳本,你是去比賽。

下面介紹一下參數的意思是:

--dbpath =數據(因爲它默認到/ var/DB這是無法訪問)

--nojournal因爲MongoDB中通常會預分配2 GB日誌文件(超過CLOUD9磁盤空間配額)

--bind_ip = $ IP(因爲你不能綁定到0.0.0.0)默認端口

--rest運行28017

+1

你知道用什麼連接字符串來訪問cloud9中的db嗎? mongodb:// localhost/dbname在那裏不起作用,我嘗試了'mongodb://'+ process.env.IP +'/ dbname',也沒有成功。 –

+0

我相信我使用貓鼬和命令行。我不知道你可以遠程訪問cloud9以外的數據庫。據我所知,你應該只使用'localhost'。對不起,我刪除了這個項目,所以我沒有方便的代碼。 –

+0

感謝您的回答!我想在應用程序中使用它,但是mongodb:// localhost/dbname不起作用。 –

7

如果您關注https://docs.c9.io/setting_up_mongodb.html此鏈接,您將在您的工作區下設置並運行您的mongodb守護進程。

如果你看一看的./mongod輸出,你會發現這樣的輸出:

2015-08-22T12:46:47.120+0000 [initandlisten] MongoDB starting : pid=7699 port=27017 dbpath=data 64-bit host=velvetdeth-express-example-1804858 

僅複製的主機和端口值,以便您的MongoDB配置,建立數據庫的URL,在這種情況是:

mongodb://velvetdeth-express-example-1804858:27017 
+0

對我來說,使用貓鼬,這工作,但我不得不添加數據庫名稱:''mongodb:// velvetdeth-express-example-1804858:27017/mydata' – Keith