如何在Cloud9中连接MongoDB?

时间:2013-01-21 08:49:57

标签: node.js mongodb cloud9-ide

我在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]]

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:3)

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');

答案 2 :(得分:1)

对于遇到此问题的其他任何人,解决方案就在这里:https://docs.c9.io/setting_up_mongodb.html

MongoDB预安装在Cloud9工作区中。运行这个:

$ mkdir data
$ echo 'mongod --bind_ip=$IP --dbpath=data --nojournal --rest "$@"' > mongod
$ chmod a+x mongod

要启动Mongodb进程,请运行:

$ ./mongod

然后'运行'你的node.js应用程序脚本和你参加比赛。

以下是参数的含义:

  

- dbpath = data(因为它默认为/ var / db,不可访问)

     

- nojournal因为mongodb通常预先分配2 GB日志文件(超过Cloud9磁盘空间配额)

     

- bind_ip = $ IP(因为你不能绑定到0.0.0.0)

     

- 休息在默认端口28017上运行