2017-01-27 6 views
1

私は自分のhtmlテンプレート(ハンドルバー)に印刷したいオブジェクトを持っています。値はmysqlサーバからのカウントクエリです。ここでハンドルバーヘルパーを使用してJSONオブジェクトを印刷する方法

​​

ルータファイルの私のGETリクエストである:ここではその中のクエリを持っている機能がある

router.get('/dashboard', getGrade7Applicants, function (req, res, next) { 
res.render('admission/dashboard', { 
    applications: { 
      'grade7': req._applications7 
    } 

}); 
}); 

ハンドルherlperは以下の通りです:

Handlebars.registerHelper('toJSON', function(object){ 
return new Handlebars.SafeString(JSON.stringify(object)); 
}); 

そして最後に、私のhtmlテンプレートは:

<div class="alert alert-success" role="alert"> 
      <p style="font-size:75px; text-align:center;">{{toJSON applications.grade7}}</p>    
      <p style="text-align:center;"><strong>7th GRADE Applications<strong> </p> 
     </div> 

この後、私のウェブページの出力はです。[{"COUNT(*)":20}]

私は本当になぜそれが質問の一部を印刷するのかわかりません。 20は、私が印刷したいと考える正しい価値です。

答えて

2

は、ここではさらにいくつかの説明です:

あなたは(私は作るために、結果の名前を数えた次のクエリを使用している場合は、ディスプレイ複数のディスプレイに優しい:

SELECT COUNT(*) as result FROM applications WHERE grade="Grade 7" 

あなたは次のようになり、結果オブジェクトを取り戻す必要があります。

[{ 
    "result": "20" 
}] 

あなたがそれを文字列化する場合ので、あなたはを含む全体のオブジェクトを取得しますプロブレム名と角括弧をテキストとして使用します。

あなたは全体の配列を渡すと、それを反復(あなたが持っているもの)テンプレートで、または、テンプレートに名前でプロパティにアクセスするだけで、最初の要素ができます。

res.render('admission/dashboard', { 
    applications: { 
     'grade7': req._applications7[0] 
    } 
}); 

とテンプレートで:

{{#if applications}} 
    {{#if applications.grade7}} 
     {{applications.grade7.result}} 
    {{/if}} 
{{/if}} 

はまた、単にデータに値を直接渡すことができます:

res.render('admission/dashboard', { 
    applications: { 
     'grade7': req._applications7[0].result //prop name specified 
    } 
}); 

テンプレート内:

{{#if applications}} 
    {{#if applications.grade7}} 
     {{applications.grade7}} 
    {{/if}} 
{{/if}} 

非常に具体的な理由がない限り、ヘルパーを使用する必要はありません。

1

これはクエリの一部ではありません。フィールドの名前です。フィールド名を指定していないので、単にcount(*)を使用します。

Select count(*) as app_count from applications... 

次に、あなただけの値を取得するためにapplications.gradet.app_countを使用して値を印刷することができます:あなたはあなたを変更する必要が

は、あなたがこのように動作することができます名前が含まれるように照会します。

私はあなたのオブジェクトプロパティの値を取得するために再解析する必要があるため、オブジェクトをストリング化することによって達成しようとしていることを100%確信していません。

私はハンドルバーに慣れていないので、私はここであなたを迷わせる可能性があります。プロパティ名は前述したように

関連する問題