Tengo el código a continuación. Publicamos el nombre de la sala con ajax en la url /room-api
function getCreatedRoomName(x){ $.ajax({ type: "POST", url: "/room-api", data: { roomname: x }, success: function(data) { }, error: function(jqXHR, textStatus, err) { alert('text status '+textStatus+', err '+err) } }); return x; }aplicación.js
app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); var room_name; app.post('/room-api', isLoggedIn, function(req, res){ room_name = req.body.roomname; console.log(room_name); });Luego recibimos esos datos con app.post como puede ver arriba. ¿Cómo puedo crear una nueva app.get con el nombre creado? Intenté esto.
app.post('/room-api', isLoggedIn, function(req, res){ room_name = req.body.roomname; app.get(`/${room_name}`, isLoggedIn, function(req, res){ res.redirect(`/${room_name}`); }); console.log(room_name); });Pero no funciona.
No funcionará, ya que las rutas se declaran a nivel de la aplicación (esta es indefinida, entonces), es decir, son estáticas, una vez que la aplicación se ha iniciado, no se pueden agregar dinámicamente.
Los puntos finales dinámicos generalmente se manejan mediante el uso de parámetros de ruta.
Verifique los parámetros de la ruta :
Los parámetros de ruta son segmentos de URL con nombre que se utilizan para capturar los valores http://expressjs.com/en/guide/routing.html#route-parameters
En su caso, intente crear una ruta que maneje los nombres de las habitaciones y pásele el nombre de la habitación como un parámetro de URL:
app.get('/room/:room_name', isLoggedIn, function(req, res){ console.log('the room_name is in req.params', req.params); res.redirect(req.params.room_name); });