V.Holovka
V.Holovka

Reputation: 113

how to connect MongoDB in Cloud9?

I have a problem with the connection database MongoDB in Cloud9 Please help to resolve this issue!

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]               
        }
});

Output:

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

Upvotes: 4

Views: 13314

Answers (3)

Vincent Zhao
Vincent Zhao

Reputation: 167

If you follow https://docs.c9.io/setting_up_mongodb.html this link, you will setup and run your mongodb daemon under your workspace.

And if you take a look at the output of ./mongod, you'll find out this output:

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

Just copy the host and port value to your mongodb config, set up the database url, in this case is:

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

Upvotes: 7

James Gentes
James Gentes

Reputation: 8086

For anyone else who runs into this issue, the solution is here: https://docs.c9.io/setting_up_mongodb.html

MongoDB is preinstalled in the Cloud9 workspace. Run this:

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

To start the Mongodb process, run:

$ ./mongod

Then 'run' your node.js app script and you're off to the races.

Here's what the parameters mean:

--dbpath=data (because it defaults to /var/db which isn't accessible)

--nojournal because mongodb usually pre-allocates 2 GB journal file (which exceeds Cloud9 disk space quota)

--bind_ip=$IP (because you can't bind to 0.0.0.0)

--rest runs on default port 28017

Upvotes: 1

jared
jared

Reputation: 5539

process.env.PORT and process.env.IP are the port and IP address for your application, not your database. You'll want to pull your Mongo connection string from your MongoDB provider.

Below is the hello world example from the Node.js homepage modified to use the two environment variables.

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

Upvotes: 2

Related Questions