¿Cómo configuro la base de datos MongoDB en Heroku con MongoLab?

Estoy usando Express.js y MongoLab y seguí la configuración de Heroku para hacer que MongoDB trabaje en producción y lance este código en mi app.js

//Mongo on Heroku Setup var mongo = require('mongodb'); var mongoUri = process.env.MONGOLAB_URI || process.env.MONGOHQ_URL || 'mongodb://localhost/mydb'; mongo.Db.connect(mongoUri, function (err, db) { db.collection('mydocs', function(er, collection) { collection.insert({'mykey': 'myvalue'}, {safe: true}, function(er,rs) { }); }); }); 

y tengo las siguientes rutas y campo para mi formulario de correo electrónico (también en app.js):

 //Routes app.get('/', function(req, res) { res.render('index', { title: 'DumbyApp' }); }); //save new email app.post('/', function(req, res){ emailProvider.save({ address: req.param('address') }, function( error, docs) { res.redirect('/') }); }); 

Esto representa el nuevo formulario en la página de índice y me permite guardarlo localmente pero no en producción porque no sé cómo configurar mi colección de correo electrónico. ¿Alguien puede guiarme a través de esto? completamente nuevo en el uso de MongoDB y Node.js, por lo que podría necesitar ayuda.

EDITAR:

En la interfaz de la base de datos MongoLab, hice una collection llamada emails . ¿Es este el curso de acción correcto?

EDIT 2:

Aquí se define EmailProvider en app.js junto con el propio archivo.

app.js

  var express = require('express') , routes = require('./routes') , user = require('./routes/user') , http = require('http') , path = require('path') , EmailProvider = require('./emailprovider').EmailProvider; var emailProvider= new EmailProvider('localhost', 27017); 

emailprovider.js

 var Db = require('mongodb').Db; var Connection = require('mongodb').Connection; var Server = require('mongodb').Server; var BSON = require('mongodb').BSON; var ObjectID = require('mongodb').ObjectID; EmailProvider = function(host, port) { this.db= new Db('localdb', new Server(host, port, {safe: false}, {auto_reconnect: true}, {})); this.db.open(function(){}); }; EmailProvider.prototype.getCollection= function(callback) { this.db.collection('emails', function(error, email_collection) { if( error ) callback(error); else callback(null, email_collection); }); }; //save new email EmailProvider.prototype.save = function(emails, callback) { this.getCollection(function(error, email_collection) { if( error ) callback(error) else { if( typeof(emails.address)=="undefined") emails = [emails]; for( var i =0;i< emails.address;i++ ) { email = emails[i]; email.created_at = new Date(); } email_collection.insert(emails, function() { callback(null, emails); }); } }); }; exports.EmailProvider = EmailProvider; 

Si bien el código de conexión en el primer cuadro de código parece ser correcto, el objeto emailProvider no lo está utilizando. En cambio, en app.js, el EmailProvider se conecta a localhost: 27017 y el nombre de la base de datos está codificado en el archivo emailprovider.js como ‘localdb’.

Lo que desea hacer en su lugar es utilizar la información de conexión proporcionada en la variable de entorno MONGOLAB_URI en su Proveedor de correo electrónico, que ya contiene el nombre del host, el puerto y la base de datos.

Hay varias formas de hacer esto, pero una forma sería mover el código de conexión de ese primer cuadro de código al constructor EmailProvider, y luego cambiar el constructor para que tome un URI en lugar de un host y un puerto. De esa manera, puede pasar la variable MONGOLAB_URI al constructor en app.js.