【问题标题】:Retrieving HTML from CouchBase into Node.js / Express 4 leaves it unrendered将 HTML 从 CouchBase 检索到 Node.js / Express 4 使其未呈现
【发布时间】:2014-12-20 04:06:10
【问题描述】:

我在渲染 HTML 时遇到了一个小问题,它存储在 CouchBase 中,由 Node.js 获取

在 CouchBase 我有几个小的 HTML-sn-ps。它们包含文本、<br /> 等标签和< 等html 实体。它们当然存储为 JSON 中的转义字符串。

到目前为止,一切都很好。但是,当我将其拉出并显示在页面上时,它会“按原样”呈现,而不会被解释为 HTML。

例如:

[ some content ...]
<p>Lorem is &gt; ipsum<br />And another line</p>
[rest of content ...]

来自 Express 4 中的控制器:

var express = require('express');
var router = express.Router();

var couchbase = require('couchbase');
var cluster = new couchbase.Cluster('couchbase://myserver');
var bucket = cluster.openBucket('someBucket', 'somePassword');

var Entities = require('html-entities').XmlEntities;
entities = new Entities();
var utf8 = require('utf8');

/* GET home page. */
router.get('/', function(req, res) {



    bucket.get('my:thingie:44', function(err, result) {
         if(err) throw err
         console.log(result);
        var html = utf8.decode(entities.decode(result.value.thingie.html));
        // var html =   utf8.encode(result.value.thingie.html);
        // var html =   utf8.decode(result.value.thingie.html);
        res.render('index', { title: 'PageTitle', content: html });
    });

});

然后将其传递给模板(使用 hogan.js)进行渲染。

当我研究这个时,我发现它可能与&amp;lt;'s 和&amp;lt;'s 的编码有关,这会阻止它被解析。您可以在代码中看到我的转换尝试,其中没有任何选项给出所需的结果,即将内容呈现为 HTML。

使用 utf8.decode() 时,没有区别。 使用 utf8.encode(),没有区别。 使用entities.decode() 它将&amp;lt; 转换为&amp;lt;,正如预测的那样,但即使&amp;lt;div;&amp;gt 变为&lt;div&gt;,它也不会呈现。

有什么想法吗?

【问题讨论】:

    标签: node.js express character-encoding couchbase html-entities


    【解决方案1】:

    我在这里找到了解决方案:Partials with Node.js + Express + Hogan.js

    将 HTML 放入 Hogan 模板时,您必须使用 {{{var}}} 而不是 {{var}}。 因此它按预期呈现精美:)

    根本没有编码问题;)

    【讨论】:

      猜你喜欢
      • 2013-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多