Estoy creando un sitio web para recopilar datos para mi investigación de escritura usando javascript y node js. En el lado del cliente, uso la función de búsqueda para obtener los datos y enviar una solicitud de publicación al lado del servidor. Del lado del servidor, tengo los datos guardados en mi base de datos MongoDB. Debido a que el servidor suele tardar de 5 a 15 segundos en manejar los datos publicados, me gustaría usar una función de redirección para redirigir al usuario del lado del cliente a una nueva página cuando los datos publicados se guarden correctamente. De esta manera, el usuario de la página web no puede pasar a la página siguiente hasta que la solicitud de publicación se procese con éxito. Pero por alguna razón, la función de redirección no funciona. ¿Alguien puede ayudar con esto?
Aquí están los fragmentos de código en el lado del cliente:
//post the data to the serve button.onclick = () => { const options = { method: 'POST', headers: { 'Content-Type':'application/json' }, body: JSON.stringify(keylog) }; fetch('/api6', options); };Aquí están los códigos relevantes en el lado del servidor:
app.post('/api6', (req, res) =>{ let data = req.body; let writing = new Writing({ Task: 'Writing', ParticipantID: JSON.stringify(data.ParticipantID), Prompt: JSON.stringify(data.Prompt), TaskOnSet: JSON.stringify(data.TaskOnSet), TaskEnd: JSON.stringify(data.TaskEnd), PageLeaveStart: JSON.stringify(data.PageLeaveStart), PageLeaveEnd: JSON.stringify(data.PageLeaveEnd), InactivityStart: JSON.stringify(data.InactivityStart), InactivityDuration: JSON.stringify(data.InactivityDuration), EventID: JSON.stringify(data.EventID), Time: JSON.stringify(data.Time), Output: JSON.stringify(data.Output), Cursorposition: JSON.stringify(data.Cursorposition), WordCount: JSON.stringify(data.WordCount), TextChange:JSON.stringify(data.TextChange), Activity: JSON.stringify(data.Activity), FinalProduct: JSON.stringify(data.FinalProduct) }); writing.save(); res.redirect('/vocab_intro'); }); app.get('/vocab_intro', (req, res) => { res.sendFile('./vocab_intro/index.html', {root: __dirname}); });