我使用sequelize作爲ORM和passport.js(passport-local)進行身份驗證。我注意到每個HTTP請求都會產生一個單獨的數據庫命令。我開始查看deserializeUser()函數。passport.deserializeUser對每個HTTP請求執行DB(sequelize)命令
當加載一個頁面,這就是我得到:
執行:SELECT * FROM
Users
WHEREUsers
。id
= 1極限1;一遍又一遍!
GET/200爲12ms - 780
執行:SELECT * FROM
Users
WHEREUsers
。id
= 1極限1;執行:SELECT * FROM
Users
其中Users
。id
= 1極限1;一遍又一遍!
GET /js/ui.js 304 4ms的
一遍又一遍又一遍!
GET /stylesheets/main.css 304 6ms的
執行:SELECT * FROM
Users
WHEREUsers
。id
= 1極限1;一遍又一遍!
GET /images/logo.jpg 304 3ms的
這裏的passport.deserializeUser的樣子:
passport.deserializeUser(function(id, done) {
User.find(id).success(function(user) {
console.log('Over and over and over!');
done(null, user);
}).error(function(err) {
done(err, null);
});
});
我請求的頁面是:
index: function(req, res) {
res.render('index', {
title: "Welcome to EKIPLE!",
currentUser: req.user
});
}
是反序列化用戶應該運行的每個圖像,html,css文件請求?如果是這樣,是否有減少對數據庫請求數量的方法?
工作!謝謝! – vilijou 2013-03-05 18:41:27
偉大的解決方案,我有這個問題的變化,並在這裏發佈一個問題http:// stackoverflow。COM /問題/ 34277748/expressjs-passportjs - 反序列化用戶對象換每個請求到一個路由 – Raf 2015-12-14 22:32:25