Nodejs - 从 MongoDB 检查空对象并解析它

Nodejs - Checking for empty object from MongoDB and parsing it

我正在尝试从 NodeJS(使用 ExpressJS)和 MongoDB 实现一个简单的登录机制。我使用 MongoJS 进行数据库连接。我正在使用 $and: 查看集合中的字段是否匹配。

function authenticate(req,res){

username  = req.body.username;
password = req.body.password;
db.users.find({$and :[{username:username},{password:password}]},function(err,doc){

   if(( Object.keys(doc).length === 0 && doc.constructor === Object) === false){
       res.send("Invalid login")
   } else {
       doc.forEach(function(doc){
           console.log(doc.firstname)
       })

   }
})
}

我正在检查文档是否包含空对象(这意味着用户名和密码不匹配)并告诉页面显示登录无效。如果文档确实包含匹配的用户名和密码,我 console.log()ging 用户的名字...

上面的代码不工作...我做错了什么?

提前致谢...

我认为,与其做你正在做的事情,不如简单地 运行 查询用户名且限制为一个结果并查看是否返回doc 包含一个结果。从那里我们将检查发布的密码是否与从数据库中查询的密码匹配,如果匹配,我们将 console.log 用户名。此外,您应该先对其进行哈希处理,而不是查询密码。详细了解 HERE

function authenticate(req,res){
    username  = req.body.username;
    password = req.body.password;
    db.users.findOne({"username":username}, function(err, doc) {
        if (err) throw err;
        if(doc && doc._id){
            if(password==doc["password"]){
                console.log("Your first name is: "+doc.firstname)
            }else{
                res.send("Invalid login")
            }
        }else{
            res.send("Invalid login")
        }
    });
}