如何使用node-mongodb-native连接到Heroku?
我对如何连接到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。
有人可以教我如何修改我的代码连接? 或者解释一下这些概念? 我不知道为什么我发布的那个网站的作者使用了这么多的callback来进行数据库调用,当我的方法看起来很简单(我是JavaScript新手,不太适合callback)。
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' }); });
你连接到你的mongolab数据库(所以你不能创build一个新的“博客”数据库)。 process.env.MONGOLAB_URI也包含数据库名称。 看到你的蒙哥拉乌里:
heroku config | grep MONGOLAB_URI
它看起来像: mongodb://heroku_app123456:password@dbh73.mongolab.com:27737/heroku_app123456
在github上有一个例子,如何连接和检索来自mongolab数据库的数据 。
使用“连接”连接到mongo,而不是定义数据库,服务器,客户端:
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"); }); });