У меня есть веб-сервер, работающий на 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>