2013-08-31 17 views
0

完全陌生的蒙戈,我一直在檢查小時的例子,試圖檢查,如果用戶在此集合中存在:如何從MongoDB中在node.js中用戶信息

{ "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()函數被觸發後才關閉數據庫,否則它會在結果之前關閉數據庫。

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(); 
}); 

});