Как отобразить массив как гипертекст в node.js - PullRequest
0 голосов
/ 15 февраля 2020

Я хочу отобразить массив комнат как гипертекст, но после создания первой комнаты выдается ошибка.


let rooms = [];
app.get("/rooms", function(req, res) {
    for(let i=0;i<rooms.length;i++) {
        res.send('<a href="/room/'+rooms[i]+'">'+rooms[i]+'</a> <br>');
    }
    res.send(200)
});
app.get("/room/:roomName", function(req, res) {
    let roomName = req.params.roomName;
    rooms.push(roomName);
    res.send(roomName);
});

Ответы [ 3 ]

0 голосов
/ 15 февраля 2020

Я думаю, что код ниже решает вашу проблему,

// Rooms must be const, didn't modified, push is enumerating not overriding.
const rooms = []

// Prefer arrow functions for better looking code
// If you don't use req, just _
app.get('/rooms', (_, res) => {
  // Map over rooms,
  const response = rooms.map(room => `<a href="${room}">${room}</a>`)
  res.send(response)
})

app.get('/room/:name', (req, res) => {
  const { name } = req.params
  rooms.push(name)
  res.send(name)
})
0 голосов
/ 15 февраля 2020
app.get('/rooms', (req, res) => {
  try {
    return res.status(200).json(rooms.map(room =>(`<a href="${room}">${room}</a>`)));
  } catch(error) {
     console.error(error);
     return res.status(500).json(error); // or another status you decide.
  }
})
0 голосов
/ 15 февраля 2020

На самом деле проблема с res.send, поскольку он показывает, что сервер ответил клиенту. Таким образом, вы можете попробовать следующий код

app.get("/rooms", function(req, res) {
    let responseString = "";
    for(let i=0;i<rooms.length;i++) {
        responseString += ('<a href="/room/'+rooms[i]+'">'+rooms[i]+'</a> <br>');
    }
    res.status(200).send(responseString)
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...