来自数据库的数据在网页上显示时带有 html 标签而不是格式化文本

Data from DB displays on webpage with html tags instead of formatted text

Node.js 带有 Express、MongoDB、Pug 和 CKEditor 4 的应用程序。问题是:我尝试将数据从编辑器提交到数据库,然后在网页上显示它们。数据显示为带有 html 标签的纯文本,而不是在编辑器中显示的格式化文本。

我的问题是:为什么数据显示不正常,如何解决?

图片 1 - 提交前格式化

图 2 - 网页上来自数据库的数据

网页来源:

<li>Article One</li>
    <li>Article One</li>
    <li>Article One</li>
</ol>

代码片段:

1) article.pug

extends layout

block content
  h1.page-header= article.title
  h5 Written by #{author}
  p= article.body

2) 添加_article.pug

extends layout

block content
  h1.page-header #{title}
  form(method='POST' action='/articles/add')
    #form-group
      label Title:
      input.form-control(name='title' type='text')
    #form-group
      label Body:
      textarea.form-control(name='body' id='editor')
    br
    input.btn.btn-primary(type='submit' value='Submit')

3) main.js

CKEDITOR.replace('editor')

HTML 在 Pug 中默认被转义。您需要将内容包装在 !{ } 中以使其不被转义。在此处查看更多信息:https://pugjs.org/language/interpolation.html#string-interpolation-unescaped

请注意,未转义的渲染 HTML 可能会带来安全风险。