Tengo un problema para actualizar los valores almacenados en el mapa a la base de datos porque el mapa se actualiza continuamente debido a las solicitudes entrantes en la ruta y, al mismo tiempo, quiero actualizar los valores en la base de datos periódicamente con la ayuda del mapa. ¿Cómo sincronizar ambas operaciones?
const url_count = new Map(); async function update_count(){ // update value in mongodb } app.get('/teeny/:code', async (req, res) => { try { const url = await Link_URL.findOne({ _id : req.params.code }) if (url) { if(url_count.has(req.params.code)){ const val = url_count.get(req.params.code); url_count.set(req.params.code,val+1); update_count(); } else{ url_count.set(req.params.code,1); } return res.redirect(url.URL); } else { return res.status(404).json('No URL Found') } } catch (err) { console.error(err) res.status(500).json('Server Error') } }) cron.schedule('* * 1 * *', update_count);Podría usar Más tarde para una solución simple ... aquí estaría recopilando todos esos valores y luego insertarlos en un momento específico que especificó más adelante ...
Para algo más pesado, podrías optar por Bull o por Rabbot .
Si quieres matar a un león, elige Node-Celery ... pero asegúrate de tener Python instalado.
Básicamente, todo lo que necesita es un sistema de colas para recopilar [en una cola] todas aquellas tareas que desea guardar más tarde...