Implementé un tiempo de espera cada 5 segundos para ejecutar location.reload() pero en las páginas tengo algunos formularios que envían algunas publicaciones a mongoDB y una vez que lo hago, me redirigirá a la página para que las actualizaciones sean visibles. El problema es que una vez que se redirige location.reload() volverá a enviar la publicación y creará un nuevo registro en MongoDB. ¿Hay alguna manera de evitar esto?
Este es un ejemplo de mi código:
pedidos.js
... if(ActionDOM == 'accept'){ FinalOrder.findOneAndUpdate({'_id':orderId},{ "$set": { 'orderStat':1, 'last_update':Date.now() } }).then(order => { UpdateItem.aggregate([ { $group:{ _id:'a', minNum:{ $max:'$idUpdate' } } } ]).then(u =>{ var idUpdate = (u.length==0)?1:u[0].minNum+1 const update = new UpdateItem({ idUpdate, idUser:req.user._id, idOrder:orderId, orderStat:1 }) update.save().then(o =>{ Promise.all([mongoQueries.activeOrders(req.user._id.toString()),mongoQueries.menuItems(),mongoQueries.openOrders()]).then(info => { res.render('openOrders', {pageTitle:'My orders', navBarOn:'1', user:req.user, info:info, refresh:1}) }).catch(e => console.log(e)) }).catch(e => console.log(e)) }).catch(e => console.log(e)) }).catch(e => console.log(e)) }pedidos.ejs
... <% if(locals.refresh){ %> <% if(locals.refresh==1){ %> <script> setTimeout(location.reload(),5000) </script> <% } %> <% } %> ...location.reload() // it reloads page with post data.Probar
window.location = ""; // opens a page without post datao
window.location = document.URL; // opens a current page without post data <% if(locals.refresh){ %> <% if(locals.refresh==1){ %> <script> setTimeout(function() { window.location = ""; },5000) </script> <% } %> <% } %>