从数据库中取出的nodejs html脚本无效

时间:2016-02-07 08:11:54

标签: node.js mongodb

我有一些脚本,我保存在数据库中,例如 -

<ul>
  <li><a href="blog.html">Blog</a></li>
  <li><a href="blog-sidebar.html">Blog with sidebar</a></li>
  <li><a href="blogpost.html">Blog post</a></li>
  <li><a href="blogpost-sidebar.html">Blog post with sidebar</a></li>
</ul>

当我使用节点js应用程序在html页面中打印它时,它只是将其打印为STRING,我希望它像实际的html脚本一样工作(因为它在某些其他语言中工作,如php)

引擎我用来生成html页面正在流动

app.engine('html', cons.swig);
app.set('view engine', 'html');
app.set('views', __dirname + '/views');
app.use(express.static(__dirname + "/views"));

2 个答案:

答案 0 :(得分:1)

根据twig php文档,有一个原始过滤器http://twig.sensiolabs.org/doc/filters/raw.html,它将内容标记为安全。

所以我建议尝试

{{ htmlResponseFromMongoDB | raw }}

然而,twig.js实现似乎不支持此过滤器https://github.com/justjohn/twig.js/wiki/Implementation-Notes

根据文档的替代方案是关闭该块周围的自动景观。

{% autoescape false %}
{{item}}
{% endautoescape %}

答案 1 :(得分:0)

你是如何打印到HTML的? 试试这个:

app.get('/page1', function(req, res) 
{

    var fromdb = '<ul> \
    <li><a href="blog.html">Blog</a></li> \
    <li><a href="blog-sidebar.html">Blog with sidebar</a></li> \
    <li><a href="blogpost.html">Blog post</a></li> \
    <li><a href="blogpost-sidebar.html">Blog post with sidebar</a></li> \
    </ul>';

    res.writeHead(200, {'Content-Type': 'text/html'});
    res.write('<html><head></head><body>');
    res.write(fromdb);
    res.end('</body></html>');

});