node.js - tutorial - mongoose virtual
¿Mongoose/MongoDB TTL notificación? (2)
Miró los documentos MongoDB y Mongoose y no puede ver si esto es posible. Te lo diré desde el principio. No he escrito ningún código que intente hacer esto todavía, porque no puedo encontrar nada con lo que engancharme.
Lo que estoy buscando es después de establecer un vencimiento TTL en un documento MongoDB (insertado a través de Mongoose en caso de que eso importe), me gustaría que la aplicación reciba una notificación cuando el documento es expulsado de la colección. ¿Hay alguna forma de hacerlo nativo de MongoDB, o tendré que hacer algo por mi cuenta (por ejemplo, un sondeo)?
No hay ganchos del lado del servidor para que su aplicación se notifique cuando los documentos MongoDB se eliminan a través de un índice TTL.
Sin embargo, un índice TTL es solo un índice basado en la fecha utilizado por un subproceso TTL del lado del servidor que se activa cada minuto y elimina los documentos nuevos que coinciden con los criterios de caducidad.
Si desea agregar algún tipo de enlace on-delete, le sugiero que escriba su propio script de caducidad y lo ejecute como una tarea programada a través de cron
o equivalente. Este script podría ejecutar primero una consulta para encontrar documentos coincidentes listos para caducar, y luego implementar cualquier notificación que su aplicación necesite antes de que los documentos sean realmente eliminados.
Aquí hay un plugin de mongoose que puede ayudarte. Implementa la función TTL y llama a la función onReap
cada vez que se ejecuta el reaper.
var ttl = require(''mongoose-ttl'');
var schema = new Schema({..});
schema.plugin(ttl, {
ttl: ''the time each doc should live in the db (default 60 seconds)'',
interval: ''how often the expired doc reaper runs (default 5 mins)'',
onReap: ''callback passed to reaper execution''
});
Debería mencionar que este complemento no utiliza la función nativa MongoDB TTL.