Estoy construyendo un acortador de URL. Por lo tanto, quiero realizar un seguimiento del recuento de clics por fecha cuando se visita una URL utilizando la URL corta. Por ejemplo: el 24 de enero, si se visitó la URL utilizando la URL corta, se mostrará el recuento de clics. Quiero que los datos se vean así:
dateWiseCount: [ { date: '01/24/2022', clickCount: 5, }, { date: '01/25/2022', clickCount: 8, }, ]Pude obtener el número total de clics cuando se visita una URL usando la URL corta, pero por alguna razón, cada vez que presiono la URL corta, está registrando la fecha, haga clic en Contar así:
dateWiseCount: [ { date: '01/24/2022', clickCount: 0, }, { date: '01/24/2022', clickCount: 0, }, ]Por lo tanto, no aumenta el recuento de clics y también crea un nuevo objeto de matriz con la misma fecha. Esto es lo que obtengo de MongoDB:
"totalClicks": 2, "dayWiseClicks": [{ "dailyClicks": 0, "_id": { "$oid": "61ee56f42b85726d004d535d" }, "date": { "$date": "2022-01-24T07:36:20.429Z" } }, { "dailyClicks": 0, "_id": { "$oid": "61ee57172b85726d004d5361" }, "date": { "$date": "2022-01-24T07:36:55.684Z" } }],Este es mi código:
exports.redirect = async (req, res) => { const url_hash = req.params.shortUrl; await URL.findOne({ url_hash }) .then((url) => { const condition = { _id: url.id }; let counter = 0; const dayWiseNewClicks = { date: new Date(), dailyClicks: counter++, }; const update = { $push: { dayWiseClicks: dayWiseNewClicks } }; if (url) { url.totalClicks++; URL.updateOne(condition, update) .then(() => { console.log("Push Succesful"); }) .catch((error) => { return res.status(404).json({ updateError: error.message }); }); url.save(); return res.redirect(url.original_url); } else { return res.status(404).json({ error: "No Url Found" }); } }) .catch((error) => { return res.status(404).json({ error: error.message }); }); };¿Como puedó resolver esté problema? Por favor, ayúdame. Atrapado en esto desde hace unas horas.