0

Nodejitsu/MongoHQ アプリで MongoDB にドキュメントを保存する際に問題があります。ローカルではすべて正常に動作しますが、MongoHQ db には認証が必要であり、ユーザー/パスの動作で失敗します (同じ資格情報を使用して MongoDB シェルに接続すると正常に動作します)。関数は次のとおりです。

var update_user = function(user, callback) {

    var client = new Db(db, new Server(host, port, {}));
    var update = function (err, collection) {
        collection.findOne({uid:user.id}, function(err, doc) {
            if (err) { throw err; }
            if (!doc) doc = { uid: user.id }
            doc.img = user.img;
            doc.name = user.name;

            collection.save(doc, {safe: true}, function(err, doc) {
                if (err) { throw err; }
                callback(user);
            });
        });
    };

    client.open(function(err, client) {
        if (err) { throw err; }
        client.authenticate(user, pass, function(err, result) {
            client.collection('users', update);
        });
    });
}

ここで何が間違っていますか?

UPD: 認証メソッドの err パラメータには次の値があります:

{ [MongoError: auth fails] name: 'MongoError', errmsg: 'auth fails', ok: 0 }

保存されたパスワードとユーザー名をもう一度確認しましたが、MongoHQ シェルにログインするために機能します。

4

1 に答える 1

2

資格情報が管理者ユーザーアカウントのものである場合は、呼び出しで管理者データベースをターゲットにする必要があります。authenticate

client.authenticate(user, pass, {authdb: 'admin'}, function(err, result) {
    client.collection('users', update);
});
于 2012-09-16T18:26:26.677 に答える