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に接続するように変更する方法がわかりません。

誰かが私のコードを変更して接続する方法を教えてもらえますか?または、これらの概念のいくつかを説明しますか?以下の私のアプローチが十分に単純であるように思われるのに、なぜ私が投稿したそのWebサイトの作成者がデータベース呼び出しを行うために非常に多くのコールバックを使用したのかわかりません(私は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

mongolabデータベースに接続します(したがって、新しい「ブログ」データベースを作成することはできません)。process.env.MONGOLAB_URIには、データベース名も含まれています。あなたのmongolaburiを見てください:

heroku config | grep MONGOLAB_URI

次のようになります。mongodb://heroku_app123456:password@dbh73.mongolab.com:27737/heroku_app123456

githubには、mongolabデータベースに接続してデータを取得する方法の例があります。

于 2012-05-05T08:40:36.763 に答える
2

db、server、clientを定義する代わりに、「connect」を使用して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");

            });
});
于 2012-06-06T22:24:48.543 に答える