Javascript 节点+;express+;mongoose查询身份验证

Javascript 节点+;express+;mongoose查询身份验证,javascript,node.js,mongodb,express,mongoose,Javascript,Node.js,Mongodb,Express,Mongoose,我在express中构建了一个简单的web应用程序,我在会话的身份验证中有点卡住了,当我开始构建应用程序的前端时,我最终将使用主干和regExp验证客户端中的所有内容。不,基本上我对mongoose中返回mongoose文档对象的查询有问题。我已经找到了几个解决方案,在查询中,您可以使用.lean()获取对象,或者从查询中获取返回值并应用.toObject(),所有这些都可以正常工作,但是当我尝试用字符串验证密钥的值时,它返回false。我将发布一个示例代码,它不完全是我得到的,但它足够接近,可

我在express中构建了一个简单的web应用程序,我在会话的身份验证中有点卡住了,当我开始构建应用程序的前端时,我最终将使用主干和regExp验证客户端中的所有内容。不,基本上我对mongoose中返回mongoose文档对象的查询有问题。我已经找到了几个解决方案,在查询中,您可以使用.lean()获取对象,或者从查询中获取返回值并应用.toObject(),所有这些都可以正常工作,但是当我尝试用字符串验证密钥的值时,它返回false。我将发布一个示例代码,它不完全是我得到的,但它足够接近,可以让人理解这一点

这将是我的模型文件的一个示例

var User = new Schema({}, { strict: false });

User.method('authenticate', function(plainText) {
var object = this.toObject();
return plainText == object.password;  });
mongoose.model('User', User);
mongoose.connect( definitions.dbConnect );
在我的应用程序文件中,我会有

app.get('/session', routes.showLogin);
app.post('/session/new', routes.login);
exports.login = function(req, res){


var userQuery = new RegExp(req.body.username , 'i');
var passwordQuery = new RegExp(req.body.password, 'i');     
var Query = User.find();

Query.findOne().where('username', userQuery).exec(function(err, user){

        if(user && user.authenticate((req.body.password))){
                    req.session.userId = user._id;

                }else{

                    res.redirect('/session');
                }
    });
},
在我的路由文件中,id有如下内容

app.get('/session', routes.showLogin);
app.post('/session/new', routes.login);
exports.login = function(req, res){


var userQuery = new RegExp(req.body.username , 'i');
var passwordQuery = new RegExp(req.body.password, 'i');     
var Query = User.find();

Query.findOne().where('username', userQuery).exec(function(err, user){

        if(user && user.authenticate((req.body.password))){
                    req.session.userId = user._id;

                }else{

                    res.redirect('/session');
                }
    });
},
任何想法都将受到赞赏,这可能非常愚蠢…:/


提前感谢

是的,robert klep说的没错,在我查看了mongoose文档和mongodb文档之后,很明显查询返回的是mongo文档对象,术语应转换为相同的对象或变量类型,以便opperand工作。

我将首先确定
明文
对象。密码
是什么,这可能会为您提供函数返回
false
的线索。