HTML из базы данных отображается в виде простого текста - PullRequest
0 голосов
/ 28 декабря 2018

У меня есть веб-сервер, работающий на NodeJS и ExpressJS.В качестве движка шаблонов я использую EJS.
. Там есть база данных, где я храню сообщения, и некоторые из них включают HTML-теги, такие как .Перед тем как сообщения будут загружены в базу данных;Они trim () & escape () -ed.Также удаляются нежелательные теги.

Проблема в том, что когда я получаю сообщения из базы данных, отправляю их клиенту по методу expressjs render('template', {options:__, x: _, y: _}), HTML-файл не отображается так, как это должно быть.Он отображается в виде обычного текста следующим образом: <b>test</b> вместо test .

Main.js (скрипт, который извлекает сообщения из базы данных)

const express = require('express');
const sql = require('sql');


module.exports = {
    runScript: function(callback){

        sql.prepareQuery('SELECT `posts`.*, `accounts`.`firstname`, `accounts`.`lastname`, `accounts`.`username` FROM `posts` LEFT JOIN `accounts` ON `posts`.`author_id`=`accounts`.`id` ORDER BY `posts`.`time` DESC LIMIT 20',
        {}, function(error, results){
            let variables = {
                posts:results
            }

            callback(variables);
        });

    }
}

Router for mainстраница

router.get('/', function(req, res, next) {

    try {
        let pageCore = require(__dirname + "/backend/main.js");


        pageCore.runScript(function(obj){
            res.set({'Content-Type': 'text/html; charset=utf-8'});

            res.locals.posts = obj.posts;
            res.locals.timeParser = require('timeParser');

            res.render('index', {
                title:"Express",
                pageToDisplay: "main.ejs"
            });
        });


    } catch(e){
        console.log("WTF??", e);
        res.send(e);
    }
});

Main.EJS (html часть)

<div class="postBody">
    <%= decodeURIComponent(posts[i].content) %>
</div>

1 Ответ

0 голосов
/ 28 декабря 2018

Я полагаю, что это печатный материал против eval.Попробуйте вместо этого переключить свои ejs.

<div class="postBody">
    <%- decodeURIComponent(posts[i].content) %>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...