如何将存储在数据库中的html呈现为ejs页面



我相信这是一个简单的问题,但似乎无法解决。

我在nodejs/express Web应用程序中安装了Quilljs编辑器,它将我的描述作为<p><strong>This is the quill data. How are we doing dev?</strong></p>存储在mysql数据库中。

现在我的ejs页面看起来是这样的:

<% data.forEach(function(d,index){ %>
<p> <%= d.description %> </p>
<% }) %>

但这显然将数据呈现为存储在数据库中(具有pstrong标签(。

我尝试过的:

  • 尝试使用<pre>,以便格式保持不变(只是新手尝试(
  • 尝试了jquery的.html().load()方法将数据更新为HTML,但没有使用

如何将其转换为html?使得格式化的文本打印得到的HTML而不是源代码。

使用<%-而不是<%=

<% data.forEach(function(d,index){ %>
<p> <%- d.description %> </p>
<% }) %>

您可以查看标签段落,以查看ejs文档中关于<%=<%-的更多使用

注意:如果您这样做,请小心XSS问题
您需要一个经过消毒的html来保存您的html。

编辑1

您不需要将其分配给新变量。

<% data.forEach(function(d,index){ %>
<% if (d.description.length > 75) { %>
<p> <%- d.description.substring(0, 75) %> </p>
<% } else { %>
<p> <%- d.description %> </p>
<% }%>
<% }) %>

不要保存HTML。

这可能会给你带来很多问题。试着制作一些任意的数据结构,比如json,然后用EJS打印出来。

最新更新