Как я могу избежать создания res.render () '& quot' при разборе массива?

1

Здесь находится новичок Node.js.

При разборе массива от сервера к клиенту res.render() (насколько я понимаю) заменяет кавычки элементами '&quot' следующим образом:

Изображение 174551

Часть index.pug, которая создает переменную:

var topics = #{topics};

Часть index.js, которая создает и анализирует переменную:

router.get('/', function(req, res) {
    var data = [];

    papers.getAllTopics(function(err, content) {
        if(err) {
            throw err;
        } else {
            for (var i = 0; i<content.length; i++){
                data.push(content[i].TOPIC);
            }
            // console.log(JSON.stringify(data));
            data = JSON.stringify(data);
            console.log(data);
            // res.send(data);
        }
        res.render('index', { title: 'Xintra | Home', "topics": data});
    });
});

Если я удалю data = JSON.stringify(data); то переменные поступают в эту форму как неожиданные идентификаторы: Изображение 174551

Как избежать этого и что лучше всего подходит для разбора массивов с сервера на клиент?

  • 1
    Не могли бы вы попробовать var topics = !{topics}; ? Это не должно ускользать от ввода
  • 0
    Вероятно, не следует использовать pug для динамического рендеринга JavaScript. Вместо этого вы должны использовать конечную точку JSON, где вы можете запросить массив как JSON со стороны клиента, а не генерировать при загрузке страницы, встроенной в <script> где-то.
Показать ещё 1 комментарий
Теги:

1 ответ

1
Лучший ответ

В соответствии с https://naltatis.github.io/jade-syntax-docs/#escaping, повторение неэпинированных данных в нефрит или мопс может быть выполнено путем замены

var topics = #{topics};

с

var topics = !{topics};

Это должно дать вам желаемый результат.

  • 0
    Отлично! Спасибо
  • 0
    Конечно, рад, я мог это прояснить!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню