我在Nodejitsu / MongoHQ应用程序中将文档保存在MongoDB中时遇到问题。在本地,一切正常,但是MongoHQ db需要验证,并且由于工作用户/密码而失败(使用相同的凭据连接到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方法的err参数具有以下值:
{ [MongoError: auth fails] name: 'MongoError', errmsg: 'auth fails', ok: 0 }
我再次检查了存储的密码和用户名,它们可用于登录MongoHQ Shell。
最佳答案
如果您的凭据用于管理员用户帐户,则在authenticate
调用中must target管理员数据库:
client.authenticate(user, pass, {authdb: 'admin'}, function(err, result) {
client.collection('users', update);
});