Configurando a Cadeia de Conexão do Node.js para o Banco de Dados do Mongo Labs no Heroku

Meu aplicativo da Web (criado no Node.js e no Express) funciona bem localmente, mas quando eu o implantei no Heroku, não consigo me conectar ao database do Mongo Labs. Eu mudei a string de conexão no meu arquivo ‘app.js’ para refletir corretamente o URI do novo database Heroku Mongo Labs (nome de usuário e senha falsos substituídos abaixo). Eu também tentei várias soluções stackoverlow não podem se conectar ao mongolab com node.js no heroku , bem como https://devcenter.heroku.com/articles/getting-started-with-nodejs#using-mongodb mas aqueles don ‘ t parecem funcionar também. Eu suspeito que isso seja um pouco diferente porque estou usando o Mongoskin.

A conexão original:

var db = mongo.db("mongodb://localhost:27017/userdir", {native_parser:true});

mudou para a nova conexão:

var db = mongo.db("mongodb://user:pass@dbh23.mongolab.com:27237/heroku_app24581691",{native_parser:true});

Alguma idéia do que estou perdendo aqui?

 var express = require('express'); var path = require('path'); var favicon = require('static-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); // Database var mongo = require('mongoskin'); var db = mongo.db("mongodb://user:pass@dbh23.mongolab.com:27237/heroku_app24581691", {native_parser:true}); // Make db accessible to the router var routes = require('./routes/index'); var users = require('./routes/users'); var app = express(); // view engine setup app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'jade'); app.use(favicon()); app.use(logger('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded()); app.use(cookieParser()); app.use(express.static(path.join(__dirname, 'public'))); // Make db accessible to the router app.use(function(req,res,next){ req.db = db; next(); }); app.use('/', routes); app.use('/users', users); /// catch 404 and forwarding to error handler app.use(function(req, res, next) { var err = new Error('Not Found'); err.status = 404; next(err); }); /// error handlers // development error handler // will print stacktrace if (app.get('env') === 'development') { app.use(function(err, req, res, next) { res.status(err.status || 500); res.render('error', { message: err.message, error: err }); }); } // production error handler // no stacktraces leaked to user app.use(function(err, req, res, next) { res.status(err.status || 500); res.render('error', { message: err.message, error: {} }); }); module.exports = app; 

Eu respondi isso nos comentários do meu tutorial, mas vou responder aqui também: Eu acho que é provável que você precise usar a variável de ambiente referenciada na ducomentação do Heroku que você vinculou: process.env.MONGOLAB_URI … meu palpite é que Heroku não quer que você coloque seu nome de usuário / senha diretamente no código (e com boas razões, já que isso não é particularmente seguro). Dê uma chance com:

 var db = mongo.db(process.env.MONGOLAB_URI, {native_parser:true}); 

e veja como isso funciona.