Aquí está nuestro escenario:
Estamos usando node w/express para nuestra aplicación web y necesitamos crear un proceso en segundo plano que verifique continuamente la fecha de creación en varias publicaciones y cuándo caducan. El usuario establece estas fechas de caducidad, por lo que las publicaciones caducan a diferentes velocidades. Cuando expire la fecha, nuestra aplicación debería activar eventos específicos.
Estamos considerando usar un "setInterval", pero no estábamos seguros de si esta es la mejor solución a largo plazo.
¿Hay alguna solución para que el nodo verifique continuamente si una fecha ha expirado o no? Al expirar, las publicaciones deben activar funciones específicas.
Hay dos maneras de hacer esto:
1) usa moment lib así:
var date = moment("2013-03-24") var now = moment(); if (now > date) { // date is past } else { // date is future }2) use un programa de nodos como este:
var schedule = require('node-schedule'); var futureDate = new Date(new Date().getTime() + 60 * 60 * 24 * 1000); // This is 24 hours from *now* var j = schedule.scheduleJob(futureDate, function(){ console.log('Do your work here.'); });No estoy seguro acerca de su código, pero si puede detectar el evento cuando los usuarios publican, la forma más fácil sería
setTimeout(whateverYouHaveTodo, expireTimeInMilliseconds);cada vez que se desencadena un evento.
Y si necesita cancelar los tiempos de espera en el futuro, lo que hago personalmente es poner los tiempos de espera en un objeto json con la clave como una identificación única que podría identificar el evento específicamente