Uso sequelize come ORM e passport.js (passport-local) per l'autenticazione. Ho notato che ogni richiesta HTTP si traduce in un comando di database separato. Ho iniziato a guardare la funzione deserializeUser().passport.deserializeUser che esegue un comando DB (sequelize) per ogni richiesta HTTP
Quando si carica una sola pagina, questo è ciò che ottengo:
Esecuzione: SELECT * FROM WHERE
Users
Users
.id
= 1 LIMIT 1;Ancora e ancora e ancora!
GET/200 12ms - 780
esecuzione: SELECT * FROM WHERE
Users
Users
.id
= 1 LIMIT 1;Esecuzione: SELEZIONARE * DA
Users
DOVEUsers
.id
= 1 LIMIT 1;Ancora e ancora e ancora!
GET /js/ui.js 304 4ms
Più e più e più volte!
GET /stylesheets/main.css 304 6ms
esecuzione: SELECT * FROM WHERE
Users
Users
.id
= 1 LIMIT 1;Ancora e ancora e ancora!
GET /images/logo.jpg 304 3ms
Ecco come appare 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);
});
});
La pagina che sto chiedendo è:
index: function(req, res) {
res.render('index', {
title: "Welcome to EKIPLE!",
currentUser: req.user
});
}
Is il deserializeUser dovrebbe funzionare per ogni immagine, html, file css richiesto? In tal caso, esiste un modo per ridurre il numero di richieste al DB?
Ha funzionato! Grazie! – vilijou
Ottima soluzione, ho una variazione di questo problema e ho postato una domanda qui http: // stackoverflow.com/domande/34277748/expressjs-passportjs-de-serializza-utente-oggetto-per-ogni-request-to-a-route – Raf