[英]node + express + mongoose query authentification
我在Express中構建了一個簡單的Web應用程序應用程序,我在會話的身份驗證中有些卡住,最終在我開始構建應用程序的前端時,我將使用骨干網和regExp來驗證客戶端中的所有內容。 沒有basycally,我在貓鼬查詢返回貓鼬文檔對象時遇到了問題。 我已經找到了幾種解決方案,在查詢中可以使用.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');
}
});
},
任何想法將不勝感激,它可能非常愚蠢...:/
提前致謝!
是的,羅伯特·克萊普(Robert klep)的錢是對的,在我查看了mongoose文檔和mongodb文檔之后,很明顯查詢返回了mongo文檔對象,術語應轉換為相同的對象或變量類型,以使操作符起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.