将文档字段呈现为HTML

我使用NodeJS,Express,MongoDB和Swig创build我的第一个示例代码。 这是一个小型的博客应用程序,我试图呈现现有的post,但是,post正文包含HTML标签,它们被打印为文本。

我怎样才能把它们呈现为HTML?

这是我的看法(main.html):

<p> <h3>{{title}}</h3> <h6><i>{{postedAt}}</i></h6> </p> <p> {{content}} </p> 

这里是app.js:

 var express = require('express'); var cons = require('consolidate'); var app = express(); var MongoClient = require('mongodb').MongoClient; var Server = require('mongodb').Server; app.engine('html', cons.swig); app.set('view engine', 'html'); app.set('views', __dirname + '/views'); var mongoClient = new MongoClient(new Server('localhost', 27017, { 'native_parser' : true })); var db = mongoClient.db('blog'); // Base URL - Show posts app.get('/', function (request, response) { var cursor = db.collection('posts').find().sort({'postedAt': 1}); cursor.each(function (err, doc) { if (err) throw err; if (doc == null) { return db.close(); } response.render('main', doc); }); }); app.get('*', function (request, response) { response.send('Page not found', 404); }); mongoClient.open(function (err, client) { if (err) throw err; app.listen(8080); console.log('Express started listening on port 8080'); }); 

Swig HMTL–默认转义所有variables。

如果您确定有问题的内容是安全的(即HTML不包含恶意JavaScript),那么您可以使用safe筛选器closuresHMTL转义:

 <p> <h3>{{title}}</h3> <h6><i>{{postedAt}}</i></h6> </p> <p> {{content|safe}} </p>