Я использую node.js, паспорт и токен на предъявителя jwt для защиты моих маршрутов. Я также использую ограничение скорости, которое работает, если я определяю const вне паспортной функции:
// setting const start - this works:
const dailyByEmail = 2;
const limiterMaxDailyByEmail = new RateLimiterMemory({
keyPrefix: 'api_max_daily_email',
points: dailyByEmail,
duration: 60 * 60 * 24,
blockDuration: 60 * 2
});
// setting const end
passport.use('jwt-access', new JwtStrategy({
jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken('authorization'),
secretOrKey: config.JWT_PUBLIC,
}, async (jwt_payload, done) => {
const connection = require('./config/dbconnection');
connection.query(..., async function(err, rows) {
if (err) {
return done(err);
}
var email = rows[0].email;
var limit = rows[0].limit;
// setting const start - does not work:
const dailyByEmail = limit;
const limiterMaxDailyByEmail = new RateLimiterMemory({
keyPrefix: 'api_max_daily_email',
points: dailyByEmail,
duration: 60 * 60 * 24,
blockDuration: 60 * 2
});
// setting const end
var maxDailyEmail = `api_max_daily_${email}`;
let retrySecs = 0;
var resGet = await Promise.all([
limiterMaxDailyByEmail.get(maxDailyEmail)
]);
var resMaxByEmail = resGet[0];
console.log(resMaxByEmail);
....
return done(null, rows[0]);
});
}));
Но я хотел бы определить const в паспортной функции и устанавливать точки по-разному в зависимости от пользователя, но затем console.log (resMaxByEmail); не определено Что может вызвать это и как я могу определить это в паспортной функции после запроса БД?