Ich benutze Sequelize als ORM und Passport.js (Pass-local) für die Authentifizierung. Ich habe festgestellt, dass jede HTTP-Anfrage zu einem separaten Datenbankbefehl führt. Ich fing an, die deserializeUser() -Funktion zu betrachten.pass pass.deserializeUser Ausführen eines DB (Sequelize) -Befehls für jede HTTP-Anfrage
Wenn eine einzelne Seite geladen wird, ist es das, was ich bekommen:
ausführen: SELECT * FROM
Users
WHEREUsers
.id
= 1 GRENZ 1;Immer und immer wieder!
GET/200 12 ms - 780
ausführen: SELECT * FROM
Users
WHEREUsers
.id
= 1 GRENZ 1;Ausführung: SELECT * FROM
Users
WHEREUsers
.id
= 1 GRENZ 1;Immer und immer wieder!
GET /js/ui.js 304 4ms
Immer und immer und immer wieder!
GET /stylesheets/main.css 304 6ms
Executing: FROM
Users
WHEREUsers
SELECT *.id
= 1 GRENZ 1;Immer und immer wieder!
GET /images/logo.jpg 304 3ms
Hier ist, wie passport.deserializeUser aussieht:
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);
});
});
Die Seite, die ich anfordernden bin ist:
index: function(req, res) {
res.render('index', {
title: "Welcome to EKIPLE!",
currentUser: req.user
});
}
Ist der deserializeUser sollte für jedes Bild, HTML, CSS-Datei angefordert werden? Wenn ja, gibt es eine Möglichkeit, die Anzahl der Anfragen an die DB zu reduzieren?
Arbeitete! Vielen Dank! – vilijou
Große Lösung, ich habe eine Variation dieses Problems und schrieb eine Frage hier http: // stackoverflow.com/questions/34277748/expressjs-pass-js-de-serialisiert-user-object-for-alle-Anfrage-an-eine-Route – Raf