使用node-native在MongoDB中进行身份验证

时间:2012-09-16 07:08:10

标签: javascript node.js mongodb mongohq

我在Nodejitsu / MongoHQ应用程序中保存MongoDB中的文档时遇到问题。在本地所有工作正常,但MongoHQ数据库需要验证,它失败与工作用户/传递(连接到具有相同凭据的MongoDB shell工作正常)。这是功能:

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:authenticate方法的错误参数具有以下值:

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

我检查了存储的密码&再次使用username,它们可用于登录MongoHQ shell。

1 个答案:

答案 0 :(得分:2)

如果您的凭据适用于管理员用户帐户,则authenticate来电{/ 3}}中的管理员数据库:

client.authenticate(user, pass, {authdb: 'admin'}, function(err, result) {
    client.collection('users', update);
});