2016-04-06 6 views
0

私は、サーバー側のテンプレートエンジンとしてデータベースとハンドルバーとしてmongoDBを使ってこの明示的なアプリケーションを持っています。アプリケーションでAngularJSまたはAjaxを使用していません。Node.js:mongooseクエリーから適切なJSONを返す

ルートの1つでは、ページをレンダリングし、データベースからjsonファイルを送信する必要があります。しかし、私はこれを達成することができません。私はそれを捕獲しようとしていますが、私もそれがJSONであるとは思わない、HBSで

router.get('/disks', function(req, res, next) { 
    places.find({"category": "disks"}, function(err, disks){ 
     if(err){ 
     throw err; 
     } 

     res.render('disks', 
     { 
      'risime': JSON.stringify(disks) 
     }); 
     console.log(disks); // PROPERLY LOGS TO THE CONSOLE 
    }); 
}); 

はここでコードが私のルートをスニペットです。ここで

は、それがクライアント側に記録されます方法です:

[{"_id":"5704630a7d4cd367f8dsdce7","name":"Seagate",:"This awesome Hard disk",","categories":["SDD","256GB"]}] 

何の問題があるとどのように私はそれを解決するのですか?

答えて

1

これは、文字列を「htmlでエスケープする」ハンドルバーです(これは通常どおりです)。

あなたはこのように、「トリプル・スタッシュ」表記を使用することができることをしたくない場合は:うーんhttp://handlebarsjs.com/#html-escaping

+0

ええと、HTMLのエスケープ文字を無視することの短所は何ですか? – QuikProBroNa

+0

セキュリティ。文字列が信頼できないソース(ユーザ入力など)から来た場合、その文字列は安全でない可能性があり、エスケープされないとhtmlタグ( '

0

私はあなたがレンダリング前にこれを追加する必要があると思う:

res.type('application/json'); 

クライアントは、これはJSONではなく、HTMLまたはプレーンテキストであり、それが正しく表示されます知っています。

私の答えがあなたを助けてくれることを願います。

+0

を、私も午前:

{{{risime}}} 

あなたがここにこのことについて読むことができますusing res.render()これは影響を受けませんか? – QuikProBroNa

+0

私はそれを試しましたが、res.render()では動作しません。単にウェブページの代わりにプレーンテキストとして私のページを表示します。 – QuikProBroNa

関連する問題