2016-10-14 6 views
0

У меня есть форма, которая после отправки перенаправляется на «/ room/roomnum» в моем приложении чата. При переадресации отображается chat.html. Но внутри app.get у меня есть номер /: id, а «id» должен иметь значение номера комнаты, введенного в форму.req.params.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

не должен» t Я получаю только номер комнаты, когда я 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

Возможно, вы получаете эти несколько консольных выходов из-за нескольких консольных операторов где-то еще в коде. –

+0

нет, я проверил ... есть только одна консольная инструкция, нет цикла. –

+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) { ... }).