2013-10-11 92 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