2012-09-16 2 views
0

내 노드 쥬/몽고 HQ 앱의 MongoDB에 문서를 저장하는 데 문제가 있습니다. 로컬에서는 모두 정상적으로 작동하지만 MongoHQ db 인증이 필요하며 작업 사용자/패스에서 실패합니다 (동일한 자격 증명으로 MongoDB 셸에 연결하면 문제가 없습니다). 함수는 다음과 같습니다.노드 - 네이티브로 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 :을 인증 방법의 잘못을 매개 변수는 다음 값이 있습니다

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

내가 다시 저장 암호 & 이름을 확인, 그들은 MongoHQ 쉘에서 로깅 작동합니다.

+0

는 특히 실패? 'client.authenticate' 콜백에 대한'err' 매개 변수에 단서가 있습니까? 네가 무시하는 것 같아. – JohnnyHK

+0

@ JohnnyHK : 내 대답을 오류 메시지로 업데이트했습니다. – skazhy

+0

사용자 계정이 관리 사용자 인 경우 특별히 admin 데이터베이스에 로그인해야합니다. 관리자 계정입니까? – JohnnyHK

답변

2

자격 증명이 authenticate 호출 관리자 사용자 계정 당신 must target 관리자 데이터베이스의 경우 :

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