我尝试使用Mongoose使我的node.js express应用程序连接到Heroku上的MongoLab数据库。我已经使用
app.configure
将我的数据库URI设置为MongoLab URI,在production
中,并且在Heroku日志中,您可以看到它一定将dbURI
设置为MongoLab URI。我也已经将NODE_ENV
设置为production
。我的问题是什么?
app.js:var express = require('express');
var mongoose = require('mongoose')
, dbURI = 'localhost';
var app = express();
app.configure('production', function () {
console.log("production!");
dbURI = 'mongodb://brad.ross.35:Brad1234@ds031347.mongolab.com:31347/heroku_app6861425';
console.log(dbURI);
});
mongoose.connect(dbURI, 'test');
mongoose.connection.on('error', console.error.bind(console, 'connection error:'));
var postSchema = new mongoose.Schema({
body: String
});
var Post = mongoose.model('Post', postSchema);
app.configure(function () {
//app.use(express.logger());
app.use(express.bodyParser());
app.use(express.static(__dirname + '/static'));
});
app.set('views', __dirname + '/views');
app.set('view engine','jade');
app.get('/', function(request, response) {
response.render('index');
});
app.post('/result', function(request, response) {
var post = new Post({body: request.body.text});
post.save(function (err) {
if (err) {
console.log("error!");
} else {
console.log("saved!");
}
});
Post.find(function (err, posts) {
if (!err) {
console.log("found!");
console.log(posts);
response.render('result', {posts: posts});
} else {
console.log("error!");
response.render('result', {posts: []});
}
});
});
app.get('/result', function (request, response) {
Post.find(function (err, posts) {
if (!err) {
console.log("found!");
console.log(posts);
response.render('result', {posts: posts});
} else {
console.log("error!");
response.render('result', {posts: []});
}
});
});
app.listen(process.env.PORT || 5000);
Heroku日志:
2012-08-21T16:52:21+00:00 heroku[web.1]: State changed from crashed to starting
2012-08-21T16:52:22+00:00 heroku[slugc]: Slug compilation finished
2012-08-21T16:52:23+00:00 heroku[web.1]: Starting process with command `node app.js`
2012-08-21T16:52:24+00:00 app[web.1]: production!
2012-08-21T16:52:24+00:00 app[web.1]: mongodb://brad.ross.35:PASSWORD@ds031347.mongolab.com:31347/heroku_app6861425
2012-08-21T16:52:24+00:00 app[web.1]: connection error: [Error: failed to connect to [ds031347.mongolab.com:31347/heroku_app6861425:27017]]
2012-08-21T16:52:25+00:00 heroku[web.1]: State changed from starting to up
mongo -u brad.ross.35 -p Brad1234 ds031347.mongolab.com:31347/heroku_app6861425
但也许你的密码并不是那个。 - Jamund Ferguson