我有一个表单,在提交后,会在我的聊天应用中重定向到" / room / roomnum"。在重定向时,会显示chat.html。但在app.get里面,我有房间/:id,以及' id'应该具有表格中输入的房间号码的值。
app.post("/user", urlencodedParser, function(req,res) {
res.redirect("/room/" + req.body.roomnum);
});
app.get("/room/:id", function(req,res) {
res.sendFile(__dirname + "/chat.html");
console.log(req.params.id);
});
但是,我在控制台中获得了多个值 -
CONSOLE OUTPUT -
roomnum
style.css中
的script.js
当我在console.log(req.params.id)时,我不能只得到房间号吗?
更新 - 应用的主要部分
//routing
app.get("/", function(req, res) {
res.render("login", {rooms: rooms});
});
app.post("/user", urlencodedParser, function(req,res) {
res.redirect("/room/" + req.body.roomnum);
});
app.get("/room/:id", function(req,res) {
res.sendFile(__dirname + "/chat.html");
//console.log(req.params.id);
});
app.use(express.static("static_files"));
//handling socket connection
io.on("connection", function(socket) {
//console.log(socket.handshake.address + " joined ");
});
答案 0 :(得分:2)
我认为这里有两个问题:
chat.html
中,您使用相对路径(没有前导/
)来加载style.css
和script.js
; 由于存在这些问题,style.css
内chat.html
的请求被"翻译"至/room/style.css
,与/room/:id
路线相匹配。它也永远不会因为这个而触及静态中间件(当路由匹配并处理请求时,任何后续的路由处理程序都不会被调用)。
所以:
/style.css
(或/css/style.css
或其他任何内容,具体取决于您构建static_files
目录的方式)在路线之前将静态中间件移至:
app.use(express.static("static_files"));
//routing
app.get("/", function(req, res) { ... }).