2015-03-02 86 views
0

我使用MongoDB在本地機器上構建應用程序,這在本地完全正常工作。但是,一旦我將其部署到Heroku,我無法連接到數據庫或從REST服務中檢索任何內容。我多次閱讀文檔,並注意到他們需要在許多地方進行更新,這些地方正在拋棄我。這裏是我的初始化代碼:從Localhost MongoDB切換到使用MongoLab在Heroku上部署

任何幫助或建議非常讚賞。

"use strict"; 

var express = require("express"); 
var path = require("path"); 
var favicon = require("serve-favicon"); 
var logger = require("morgan"); 
var cookieParser = require("cookie-parser"); 
var bodyParser = require("body-parser"); 

var server = express(); 
server.set("port", (process.env.PORT || 5000)); 
server.use(express.static(__dirname + "/public")); 

server.listen(server.get("port"), function() { 
    console.log("Node server is running at localhost:" + server.get("port")); 
}); 


var router = express.Router(); 
/* GET home page. */ 
router.get("public", function(req, res) { 
    res.render("index", { title: "MyApp" }); 
}); 

module.exports = router; 

// **** LocalDB: "mongodb://localhost:27017/myapp" **** 
var mongo = require("mongoskin"); 
var db = mongo.db("mongodb://xxxxxx:[email protected]:45511/xxxxxx", {native_parser:true}); 

var routes = require("./routes/index"); 
var users = require("./routes/users"); 
var divesites = require("./routes/myCollection"); 

var app = express(); 


// view engine setup 
app.set("views", path.join(__dirname, "views")); 
app.set("view engine", "jade"); 

// uncomment after placing your favicon in /public 
//app.use(favicon(__dirname + "/public/favicon.ico")); 
app.use(logger("dev")); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(cookieParser()); 

app.use(express.static(path.join(__dirname, "public"))); 

// Make our db accessible to our router 
app.use(function(req,res,next){ 
    req.db = db; 
    next(); 
}); 

app.use("/", routes); 
app.use("/users", users); 
app.use("/myCollection", myCollection); 

// catch 404 and forward 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; 

回答

0

你可以使用環境變量process.env.MONGOLAB_URI代替,看看雲:

var mongo = require("mongoskin"); 
var db = mongo.db(process.env.MONGOLAB_URI, {native_parser:true}); 
+0

感謝您的評論,但它並沒有任何區別。 – conor909 2015-03-05 22:27:47