Search code examples
mongodbherokusails.jssails-mongo

SailsJS deployment to Heroku, connect to Mongolabs MongoDB


I am right now attempting my first Heroku deployment of a SailsJS API. My app uses SailsJS v0.11 andsails-mongo 0.11.2.

I have updated config/connections.js to include the connection information to MongoDB database I have hosted for free at Mongolab.

mongodb: {
    adapter: 'sails-mongo',
    url: "mongodb://db-user:password123@ds047812.mongolab.com:47812/testing-db"
}

Also updated config/models.js to point to that adapter.

module.exports.models = {
    connection: 'mongodb',
    migrate: 'safe'
};

This is basically all I have changed from running the code locally, when I deploy to Heroku the app crashes and I get this error...

/home/zacharyhustles/smallChangeAPI/node_modules/connect-mongo/lib/connect-mongo.js:186
      throw err;
            ^
at Socket.emit (events.js:107:17)
2015-07-08T19:37:00.778316+00:00 app[web.1]:     
at Socket.<anonymous> (/app/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/connection/connection.js:534:10)
Error: Error connecting to database: failed to connect to [localhost:27017]

How do I get rid of this, and make sure Sails does not try connecting to localhost db?


Solution

  • Ok, the problem was with storing sessions.

    My solution was to setup a Redis database to store sessions.

    In config/sessions.js make sure everything is commented out except for the method you want for session store.

    Mine looked like this:

    adapter: 'redis',
    host: 'example.redistogo.com',
    port: 1111,
    db: '/redistogo',
    pass: 'XXXXXYYYYYYXYXYXYYX',
    

    This solved my posted problem, hope this helps another person out.