2016-03-29 20 views
0

JSONファイルにHTMLタグを保存したい。このJSONファイルには、などブログ記事、テキスト、ページを保存することができ、私の静的Expressのアプリ用データベース、jsonのhtmlタグをASCII形式のASCII形式に戻す

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

exports.fsAsync = function fsAsync(callback) { 
    fs.readFile(__dirname + '/../database/data.json', 'utf8', (err, data) => { 
    if (err) throw callback(err); 
    callback(null, JSON.parse(data)); 
    }); 
}; 

/* GET Contact page. */ 
router.get('/', function(req, res, next) { 
    fsAsync(function (err, data) { 
    if (err) { 
     return res.render('404', { 
     title: 'Error 404' 
     }); 
    } 
    var contact = data[2].contact; 
    res.render('contact', { 
     data: contact 
    }); 
    }); 
}); 

JSONファイルの特定の部分のようだ:でHTMLタグを変換している

{ 
    "contact": { 
     "body": "<p>This is the Contact Page!<br />But maybe I want to store some <a href=\"#\">links</a> in my text also!</p>" 
    } 
    }, 

私のJSON to ascii:

<main class="contact"> 
    <article> 
    &lt;p&gt;This is the Contact Page!&lt;br /&gt;But maybe I want to store some &lt;a href&#x3D;&quot;#&quot;&gt;links&lt;/a&gt; in my text also!&lt;/p&gt; 
    </article> 
</main><!-- main.about-me --> 

これを実現する方法はありますか?

テンプレートエンジンはexpress-handlebarsです:ハンドル付き

<main class="contact"> 
    <article> 
    {body|s} 
    </article> 
</main> 
+0

プロジェクトにはどのテンプレートエンジンが使用されていますか? – Theodore

+0

これは 'express-handlebars'です。私は私の質問を更新しました。 – Lanti

答えて

2

app.engine('hbs', exphbs({ 
    extname: 'hbs', 
    defaultLayout: 'main', 
    // Specify helpers which are only registered on this instance 
    helpers: { 
    // register hbs helpers in res.locals' context which provides this.locale 
    __: function() { return i18n.__.apply(this, arguments); }, 
    __n: function() { return i18n.__n.apply(this, arguments); } 
    } 
})); 
app.set('view engine', 'hbs'); 
app.set('views', __dirname + '/views'); 
+0

恐ろしい解決策!私はそれを知らなかった! :) – Lanti

0

あなたは自動HTMLエンコーディングを有効にしますdustsフィルタでは、HTMLであるテンプレートエンジン、 を伝える必要がありますトリプルを使用して生のHTML出力を得ることができます{{{ }}}ブラケット

<main class="contact"> 
    <article> 
    {{{ body }}} 
    </article> 
</main> 
+0

'express-handlebars'でこれを実現する方法はありますか?私はこのテンプレートエンジンが本当に好きです。編集:誰かがすでに答えました。 – Lanti

0

私はjsonの中にhtmlコードを格納しなければなりませんでした。 私はこのウェブサイトを使ってHTMLをフォーマットし、必要な文字をエスケープしました。

http://www.freeformatter.com/javascript-escape.html

ない、これはどのようなあなたが探したが、歓声であれば確認してください!