Estoy creando una función de afiliado en mi sitio web de comercio electrónico, he creado una función de generación de enlaces. Mi concepto principal es que si algún usuario compra algo de los enlaces generados, el usuario principal que creó la URL obtendrá una comisión. No puedo almacenar los enlaces cortos generados en el almacenamiento local de un usuario, ya que cuando hacen clic en estos enlaces generados, son redirigidos directamente a la página de destino. así que estoy tratando de obtener la URL corta generada desde el backend de mi nodo js. Estoy usando el paquete node-localstorage pero no funciona.
Mi expectativa es que cuando un usuario haga clic en el enlace corto generado, el enlace generado se almacenará en el almacenamiento local de todos modos desde el frontend o el backend.
Tenga en cuenta: el enlace generado se compartirá en muchas plataformas, por lo que quiero que antes de que el usuario vaya a la página de destino, el enlace corto se almacenará en el almacenamiento local porque si el usuario va a la página de destino, la URL corta se elimina automáticamente.
Este es mi código de frontend: antes de ejecutar este useEffect, el backend redirige a la página de destino.
useLayoutEffect(() => { setLoadings(true) fetch(`http://localhost:5000/findUrl/${path}`) .then(res => res.json()) .then(data => { if (data.isUrlTrue) { localStorage.setItem('affiliate', path) } }) .finally(() => setLoadings(false)) }, [path])Este es mi código backend que no funciona.
app.get('/:shortUrl', async (req, res) => { const shortenUrl = await bicycleAffiliateLinksCollection.findOne({ short: req.params.shortUrl }) if (shortenUrl === null) return res.sendStatus(404) // shortenUrl.clicks++ // shortenUrl.save() localStorage.setItem('affliate', "asdasd"); res.redirect(shortenUrl.full) })Guarde la URL corta en el almacenamiento local antes de que el navegador siga el enlace:
<a href="short_url" onclick='localStorage.setItem("affiliate","short_url")'>Buy it!</a>