私はORMとしてsequelizeを使用し、認証にはpassport.js(パスポート - ローカル)を使用しています。私は、すべてのHTTPリクエストが別々のデータベースコマンドを生成していることに気づいた。私はdeserializeUser()関数を見て始めました。単一のページをロードする際passport.deserializeUserは各HTTPリクエストに対してDB(sequelize)コマンドを実行します
が、これは私が得るものです:実行
:SELECT * FROM
Users
Users
。id
= 1リミット1;何度も繰り返しています!
GET/200 12msの - 780
実行:
Users
Users
SELECT * FROM。id
= 1リミット1;実行中:SELECT * FROM
Users
WHEREUsers
。id
= 1リミット1;何度も繰り返しています!オーバーと何度も304 4msの
/js/ui.js
GET!
Users
Users
SELECT * FROM:実行304 6msの/stylesheets/main.cssは
GET。
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
});
}
ですdeserializeUserは、すべてのイメージ、html、cssファイルが要求されたときに実行されるはずですか?もしそうなら、DBへのリクエスト数を減らす方法はありますか?
Worked!ありがとう! – vilijou
偉大な解決策、私はこの問題のバリエーションがあり、http:// stackoverflowの質問を投稿しました。com/questions/34277748/expressjs-passportjs-de-serializes-user-object-for-every-request-to-a-route – Raf