[英]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.