2013-10-11 59 views
0

我試圖獲取位於存儲在mongodb集合中的文檔中的字段的值。我的代碼不工作,我不知道爲什麼。我知道find()返回一個遊標對象,我想使用cursor.next()來遍歷遊標對象。看起來代碼中的一點是基於我的調試失敗的地方。我爲node.js使用mongodb模塊來執行這些操作。下面是代碼:find()在節點應用mongodb查詢非常容易混淆

建立DB /收集信息:

exports.login = function(request, response){ 
    var Db = require('mongodb').Db, 
     Server = require('mongodb').Server, 
     assert = require('assert'), 
     server_config = new Server('localhost', 27017, {auto_reconnect: true, native_parser: true}), 
     udb = new Db('users', server_config, { 
      w: -1 
     }), 
     uname = request.body.uName, 
     pw = request.body.uPass; 

開幕數據庫和查詢:

udb.open(function(err, udb) { 
     assert.equal(null, err); 
     var collection = udb.collection('profiles'); 
     collection.find({username: uname, password: pw}, function(err, collection){ 
      if(err || !collection){ 
       console.log("login fail"); 
       response.redirect('/'); 
      } 
      else { 
       collection.each(function(err, result){ 
        assert.equal(null, err); 
        console.log("login success"); 
        request.session.loggedIn = true; 
        request.session.user = uname; 
        response.redirect('/userDashboard'); 
       }); 
      } 
     }); 
     udb.close(); 
    }); 
} 

我似乎並沒有得到任何錯誤,頁面無限期地「掛起」。

+0

控制檯登錄事情?確保你得到你的代碼的某些部分? –

+0

我進入else子句,然後掛起。 'collection.each(function(err,result){'是問題出現的地方。 – gjw80

+0

循環訪問集合?它是否爲每個集合運行? –

回答

1

我覺得沒有發現。在mongo shell中測試查詢,看看你是否有任何東西。另外請務必不要以純文本存儲密碼!檢查節點bcrypt包。

+0

我不認爲我得到任何東西,我不知道我的查詢有什麼問題。數據在記錄中並且應該與查詢匹配。 – gjw80

+0

你可以在mongo shell中獲得它嗎? –

+0

是的,它顯示文件Im搜索 – gjw80