5

我对如何在 Heroku 上连接到 MongoLab 感到非常困惑。要使用 uri 连接到 Heroku,我试图按照以下示例进行操作: http: //experiencecraftsmanship.wordpress.com/2012/01/06/heroku-node-js-mongodb-featuring-the-native-driver/

我查看了他的 web.js 和 deep.js。他们都做类似的事情:

connect.createServer(
    require( 'connect-jsonrpc' )( contacts )
).listen( port );

但是只有“联系人”中的数据库查询才会传递到该服务器?我可以为每个数据库访问方法执行多个 connect.createServer 吗?

以下是我在本地连接到 MongoDB 时的部分代码。我不确定如何修改它以连接到 Heroku 上的 MongoLab。

有人可以教我如何修改我的代码以进行连接吗?或者解释其中的一些概念?我不知道为什么我发布的那个网站的作者使用这么多回调来进行数据库调用,而我下面的方法似乎很简单(我是 JavaScript 新手,不擅长回调)。

var app = module.exports = express.createServer(
  form({ keepExtensions: true })
);

var Db = require('mongodb').Db;
var Server = require('mongodb').Server;
var client = new Db('blog', new Server('127.0.0.1', 27017, {}));

var posts;
var getAllPosts = function(err, collection) {
  collection.find().toArray(function(err, results) {
    posts = results;
    console.log(results);
    client.close();
  });
}


app.get('/', function(req, response) {
  client.open(function(err, pClient) {
    client.collection('posts', getAllPosts);
  });

  // some code
  response.render('layout', { posts: posts, title: 'Raymond', contentPage: 'blog' });
});
4

2 回答 2

2

使用“connect”连接mongo,而不是定义db、server、client:

var connect = require('connect');
var mongo = require('mongodb');
var database = null;

var mongostr = [YOUR MONGOLAB_URI];

mongo.connect(mongostr, {}, function(error, db)
    {       
            console.log("connected, db: " + db);

            database = db;

            database.addListener("error", function(error){
            console.log("Error connecting to MongoLab");

            });
});
于 2012-06-06T22:24:48.543 回答
2

您连接到您的 mongolab 数据库(因此您无法创建新的“博客”数据库)。process.env.MONGOLAB_URI 也包括数据库名称。查看您的 mongolab uri:

heroku config | grep MONGOLAB_URI

看起来像:mongodb://heroku_app123456:password@dbh73.mongolab.com:27737/heroku_app123456

在 github 上有一个示例如何从 mongolab 数据库连接和检索数据

于 2012-05-05T08:40:36.763 回答