0

NodeJS を使用して Heroku 上の MongoHQ MongoDB に接続しようとすると、奇妙なエラーが発生しました。以前は機能していましたが、現在は機能しなくなりました。ローカル マシンのデータベースに接続できるので、MongoHQ は問題なく動作していると思います。Heroku では、次の最小限の例で「エラー: [mongodb://xyz.mongohq.com] に接続できませんでした」がスローされます。何が問題なのですか?

var Fiber = require('fibers');
var MongoSync = require("mongo-sync");

Fiber(function() {
  try {
    var server = new MongoSync.Server("mongodb://xyz.mongohq.com:12345");
    var db = server.db("app12345678");
    db.auth("heroku", "password");
    var collection = db.getCollection("my_collection");
    console.log(collection.count());
  } catch (e) {
    console.log(e);
  }
  process.exit(0);
}).run();
4

1 に答える 1

0

データベース名と認証資格情報をすべて接続文字列で指定してみてください。

mongodb://heroku:password@xyz.mongohq.com:12345/app12345678

また、MongoClient を使用して接続を試み、ドライバーの readme docで説明されているように接続することもできます。

 var MongoClient = require('mongodb').MongoClient,
     format = require('util').format;    

  MongoClient.connect(' mongodb://heroku:password@xyz.mongohq.com:12345/app12345678', function(err, db) {
    if(err) throw err;

    var collection = db.collection('my_collection');
    collection.insert({a:2}, function(err, docs) {

      collection.count(function(err, count) {
        console.log(format("count = %s", count));
      });
    });
  });

それでもうまくいかない場合は、すべてを再確認してください。接続するユーザーを再作成し、MongoHQ の管理ページから接続文字列をコピーして、作成したユーザー名とパスワードを置き換えます。

于 2013-09-28T12:04:19.833 に答える