簡體   English   中英

node js express 使用帶有創建名稱的 app.get 重定向到它

[英]node js express use app.get with created name to redirect to it

我有下面的代碼。 我們用 ajax 到 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;
}

應用程序.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);
});

然后我們通過 app.post 接收該數據,如上所示。 如何使用創建的名稱創建新的 app.get? 我試過這個。

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);
});

但它不起作用。

它不會起作用,因為路由是在應用程序級別聲明的(然后這是未定義的),即它們是 static,一旦應用程序啟動,它們就不能動態添加。

動態端點通常使用路由參數來處理。

檢查路線參數

路由參數命名為 URL 段,用於捕獲值http://expressjs.com/en/guide/routing.html#route-parameters

在您的情況下,嘗試創建將處理房間名稱的路由,並將房間名稱作為 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);

});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM