Soy totalmente novato en JavaScript y Express. Ahora estoy tratando de crear una ruta para verificar si el nombre del usuario ya se ha guardado como una cookie en el servidor; de lo contrario, el usuario puede completar el formulario y enviarlo al servidor. El nombre que envió el usuario aparecería en la URL y puedo usar req.query
para obtener el nombre de http://localhost:3000/trackName?name=aaa
, guardarlo en una cookie, redirigir a la página de verificación e imprimirlo en el sitio, hecho.
Sin embargo, ahora me he atascado en la parte "El nombre que envió el usuario aparecerá en la URL y puedo usar req.query
para obtenerlo y guardarlo en una cookie", porque mi programa nunca llega a la segunda función "obtener" en mi código, puedo imprimir el nombre que obtengo en el primer "obtener", pero la segunda parte nunca se ejecutará en la consola, ni en el navegador.
Aquí está mi código:
router.get('/myName', (req, res) => { const name = req.cookies.username; if (name) { console.log(name); res.render('myName', {name: name}); } else { console.log("else"); res.render('myName'); } }); router.post('/myName', (req, res) => { res.redirect('/trackName'); }); router.get('/trackName', (req, res) => { console.log(req.query.name); // here I can print out the name I got from form in terminal 'aaa' return res.render('trackName'); }); router.get('/:id', (req, res) => { console.log(req.query.name); // This part never appeared in terminal res.cookie('name', req.query.name); res.redirect('/myName'); }) router.post('/goodbye', (req, res) => { res.clearCookie('name'); res.redirect('/myName'); });
Además, aquí está mi formulario de pug para obtener el nombre:
doctype html html(lang="en") head title My Server body block content if name h2 username: #{name} form(action='/goodbye', method='post') button(type='submit') Goodbye else form(action='/trackName', method='get') label Please enter your name: input(type='text', name='name') button(type='submit') Submit
He intentado juguetear durante mucho tiempo, pero todavía falló... ¿Alguien podría ayudarme con algunas palabras clave o métodos de búsqueda?
Actualización: probé la sugerencia de @ jfriend00 de modificar /trackName
a /name
en mi formulario HTML para hacer que router.get('/:id', ...
se ejecute, pero ahora obtuve la URL http://localhost:3000/name?name=aaa
que no es lo que quiero, y aún así el router.get('/:id', ...
tampoco recibe la consulta...