Tengo una ruta como esta para ejecutar una función:
router.post('/send-verification-again', sendVerificationAgain);En la función de arriba tenemos el correo electrónico o número de teléfono de la cuenta en la que queremos verificar.
Esto ejecutará una función para enviar un correo electrónico o sms al usuario con su código de verificación, ¿de acuerdo?
Aparentemente, no queremos que el usuario pueda enviar más de una solicitud por minuto a esta ruta, ¿verdad?
¿Cómo puedo limitar la ejecución de una función para un usuario específico a uno por minuto?
function sendVerificationAgain(email) { // for each specific email here the function can be executed one time per minute }Esta es una funcionalidad muy común, ¿hay alguna convención para hacer esto?
Simplemente puede almacenar el correo electrónico por un minuto y verificar si está almacenado:
const recentlySent = new Set(); function sendVerificationAgain(email) { if (recentlySent.has(email)) return; recentlySent.add(email); setTimeout(() => recentlySent.delete(email), 60e3); // ... }También es posible que desee normalizar primero el correo electrónico, por ejemplo, en minúsculas.
Para obtener más información, busque "rebote" en el sentido de programación