1

我在 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);

在我的路线文件ID中有类似的东西

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');
                }
    });
},

任何想法都会受到赞赏,它可能非常愚蠢......:/

先谢谢了!

4

1 回答 1

0

是的,robert klep 是对的,在我搜索了 mongoose 文档和 mongodb 文档之后,很明显查询返回一个 mongo 文档对象,术语应该转换为相同的对象或变量类型以使操作数起作用。

于 2013-08-05T18:01:07.530 回答