【问题标题】:node js express use app.get with created name to redirect to itnode js express 使用带有创建名称的 app.get 重定向到它
【发布时间】:2022-01-25 10:59:03
【问题描述】:

我有下面的代码。我们将带有 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;
}

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

但它不起作用。

【问题讨论】:

    标签: javascript node.js express


    【解决方案1】:

    它不起作用,因为路由是在应用程序级别声明的(然后这是未定义的),即它们是静态的,一旦应用程序启动,它们就不能动态添加。

    动态端点通常使用路由参数来处理。

    检查路由参数

    路由参数是用于捕获值的命名 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);
    
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多