4

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]]
4

3 回答 3

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
于 2015-08-22T12:51:22.693 回答
2

process.env.PORT并且process.env.IP是您的应用程序的端口和 IP 地址,而不是您的数据库。您需要从 MongoDB 提供程序中提取 Mongo 连接字符串。

下面是修改为使用两个环境变量的Node.js 主页中的 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');
于 2013-01-21T09:41:25.173 回答
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)

--rest 在默认端口 28017 上运行

于 2014-07-25T16:18:37.813 回答