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