2013-08-31 6 views
0

, 나는 사용자가이 컬렉션에 있는지 확인하기 위해 노력, 시간에 대한 사례를 확인했습니다 몽고에 완전히 새로운 :Node.js를에서 MongoDB를에서 사용자 정보를 얻는 방법

{ "name" : "chrispy", "pass" : "xxxx", "_id" : ObjectId("5221b29b69f9e9b11a000001") } 

그러나 이름과 일치하지 수 결과를 얻고, 나는 수많은 예제를 시도해 보았습니다. 그리고 운이 없었습니다. 물론 콘솔에서

작품 : 나는 이름을 일치시킬 수 있습니다되면

mongo main 
> db.users.findOne({name : 'chrispy'}) 
{ 
     "name" : "chrispy", 
     "pass" : "xxxx", 
     "_id" : ObjectId("5221b29b69f9e9b11a000001") 
} 
> 

, 나는 암호와 일치합니다. 그러나 사용자 이름과 일치하는만큼 기울어지지 않습니다. 도움말 = 1000 고맙습니다!

var name = 'chrispy'; 
var pass = ''; 

console.log("About to check for name and pw"); 

Mongo.connect('mongodb://127.0.0.1:27017/main', function(err, db) { 
    if(err) throw err; 
    var collection = db.collection('users'); 

    // does user exist 
    var doc = collection.findOne({name : name}, function(err,doc){ 
     if(err) throw err; 
     if(doc) 
      console.log("1 Found: "+name+", pass="+doc.pass); 
     else 
      console.log("1 Not found: "+name); 

    }); 
    if(doc) 
      console.log("2 Found: "+name+", pass="+doc.pass); 
     else 
      console.log("2 Not found: "+name); 
    db.close(); 
}); 

콘솔 출력은 :

About to check for name and pw 
2 Not found: chrispy 

심지어 어쨌든 실패 핀든() 함수의 외부에 findOne() 함수에 갈 것 같지 않습니다.

+0

안녕하세요, Mongo.connect 호출을 닫으셨습니까? > "});" –

+0

이름에 console.log를 호출 할 때 콘솔에 무엇을 넣고 있습니까? –

+0

예, 콘솔에서 정상적으로 작동합니다. 위의 코드를 더 명확하게하기 위해 위의 코드를 수정하겠습니다. – ChrisAdmin

답변

0

변경 작업이 시작되기 전에 var Doc =를 제거하고 findOne()이 실행 된 후에 만 ​​db를 닫습니다. 그렇지 않으면 결과 앞에 DB가 닫힙니다.

var name = 'chrispy'; 
var pass = ''; 

console.log("About to check for name and pw"); 
Mongo.connect('mongodb://127.0.0.1:27017/main', function(err, db) { 
if(err) throw err; 
var collection = db.collection('users'); 

// does user exist 
collection.findOne({name : name}, function(err,doc){ 
    if(err) throw err; 
    if(doc) 
     console.log("Found: "+name+", pass="+doc.pass); 
    else 
     console.log("Not found: "+name); 
    db.close(); 
}); 

});