使用mongodb进行登录验证

时间:2018-05-25 18:39:59

标签: node.js database mongodb validation login

我开始学习mongo来创建一个小的登录表单验证。目前,我正试图将我从POST req收到的用户名与数据库中的值进行比较,我想到的示例代码就是下面的示例代码。

app.post('/login', urlencodedParser, function(req, res){
username = req.body.username;
password = req.body.password;
MongoClient.connect(urldb, function(err, db){
    var dbo = db.db('LCC');
    var query = {_id: username, password: password}
    var output = dbo.collection('Users').find(query)
    if(output == username){
        console.log('Found');
    }else{
        console.log('Not found');
    }
    db.close();
    res.end();
});

});

我不确定使用的find方法是否适用于这种情况,但看起来它有效,问题是我如何使用当我这样做时返回给我的对象。找到(查询)?这是比较的还是我完全错误的方向?

刚刚发布这个样本,因为我认为已经足够了,但如果需要,我会展示更多。提前谢谢。

1 个答案:

答案 0 :(得分:2)

您的代码中存在多个问题

从此

更改您的查询

var query = {_id: username, password: password}

var query = {username: username, password: password}

然后使用.find(query)而不是使用.findOne(query)因为find返回对象数组。

然后因为查询是asynchronous,您不应该像var output = dbo.collection('Users').find(query)那样分配它而是使用callback这样的函数

  dbo.collection('Users').find(query, function(err, user){
      if(err) throw new Error(err);
      if(!user) 
        console.log('Not found');
      else 
        console.log('Found!');
  })

你似乎也是node.js的新手。转到w3school https://www.w3schools.com/nodejs/nodejs_mongodb_query.asp以更加基本地了解node和mongodb的工作原理