En mi aplicación, los usuarios crean documentos que luego se guardan en la base de datos. El documento tiene un campo expireAt
que se establece en 30 días antes de la fecha de creación. Después de la fecha de vencimiento, el documento se considera inactivo.
Entonces, lo que quiero es enviar un correo electrónico al usuario después de la fecha de vencimiento para notificarle que su documento ahora está inactivo. La única solución que veo es crear un trabajo cron y sondear periódicamente la base de datos en busca de documentos caducados.
Pero no estoy seguro de si el sondeo periódico es un buen enfoque y me gustaría saber si hay otras formas de hacerlo.
PD La aplicación está construida con nodejs + mongoDB
Tykaty, puedes intentar usar 2 características de mongodb:
La idea es sencilla. Almacene los documentos como antes. Agregue una colección que verá y agregue allí los objetos que deben caducar, vincule cada documento en su colección original a un objeto correspondiente que caducará (enlace 1 a 1). Cuando el motor mongo elimina el objeto (caducado), recibe una notificación con su _id. Encuentre este _id en su colección original de documentos para comprender qué documento caducó. Aquí estás.
Por supuesto, puede comenzar con el sondeo, la solución final depende de los datos y su uso, así como de la carga.
Si su caso de uso es simplemente eliminar el documento caducado, puede usar la función TTL de mongodb.
Como necesita enviar un correo electrónico, la mejor opción es el trabajo cron como ya pensó. Sí, el sondeo periódico es una buena opción y funciona en la mayoría de los casos de uso y usted tiene control sobre él.
Según sus requisitos, puede sondear una vez al día. Si aún necesita preocuparse hasta el minuto de vencimiento, puede hacerlo restando 24 horas de su consulta real y enviar una alerta para la comodidad del usuario.