2017-02-14 4 views
1

私はnodejsを使ってアプリケーションを構築しています。複数のメッセージを返すためにconnect-flashを取得するにはどうすればよいでしょうか、または改行文字で1つのメッセージを返すのですか?

フォームを作成しましたが、私はユーザー入力のバックエンド検証に取り組んでいます。基本的に、私はvar、 "messages"を持っていて、入力エラーが発生するたびにメッセージにエラーを追加します。

var messages =""; 
errors.forEach(function(msgObject) { 
    console.log(msgObject.message); 
    messages += msgObject.message + "\r\n"; 
}) 

(私も示す使用している - http://indicative.adonisjs.com/を - 。エラーの検証のためにそれは、配列エラーを返す)

Iが接続-フラッシュ

req.flash("error", messages); 
を使用して、ユーザーにエラーを返しますよ

私は私の問題は、接続-フラッシュが改行文字を無視するということである接続-フラッシュを https://www.npmjs.com/package/connect-flash

を使用しています。私はそれぞれのエラーメッセージが別の行になりたい

enter image description here

:すなわち、私のような何かを得ます。私はそれを達成する方法を見つけることができないようです。何か案は?ここで

は、問題の簡単なバージョンです:なぜreq.flash( "エラー"、 "こんにちは\ nはさようなら")がないリターン

hello goodbye 

の代わりから欠落

hello 
goodbye 

答えて

0

実際にはさらに良い..

EJSのFILE:

<div class="container"> 
     <% if(error && error.length > 0) { %> 
     <div class="alert alert-danger"> 
      <% if(error.length === 1) { %> 
       <strong> <%= error %> </strong> 
      <% } else { %> 
       <ul> 
        <% error.forEach(function(err) { %> 
         <li> <strong> <%= err %> </strong></li> 
        <% }) %> 
       </ul> 
      <% } %> 
     </div> 
    <% } 
    if(success && success.length > 0) { %> 
     <div class="alert alert-success"> 
       <strong> <%= success %> </strong> 
     </div> 
    <% } %> 
</div> 

の.jsファイル

var messages = []; 
errors.forEach(function(msgObject) { 
    messages.push(msgObject.message); 
}) 
req.flash("error", messages) 
2

いくつかのこと自分の問題を解決するのに役立つオリジナルの投稿。

  1. 通知を表示するために使用しているテンプレート言語は何ですか。それは改行をエスケープしていますか?
  2. 代わりにHTMLを使用する必要がありますか?したがって、\nの代わりに<br />です。
  3. req.flashを複数使用して通知の配列を作成してみませんか?

3:私たちは、メッセージのarrayを持っているので、あなたがそれらを個別に表示するためにmessages配列を反復処理することができます

// Set a flash message by passing the key, followed by the value, to req.flash(). 
req.flash('info', 'Flash is back!') 
req.flash('info', 'Another message!') 

// Get an array of flash messages by passing the key to req.flash() 
res.render('index', { messages: req.flash('info') }); 

以下を参照してください。

{% for message in messages %}<li>{{ message }}</li>{% endfor %} 
0

そうだね、私は私の質問に答える私のejsファイルを忘れてしまった。

私は基本的に

<div class="container"> 
    <% if(error && error.length > 0) { %> 
     <div class="alert alert-danger"> 
       <strong> <%- error %> </strong> 
     </div> 
    <% } 
    if(success && success.length > 0) { %> 
     <div class="alert alert-success"> 
       <strong> <%= success %> </strong> 
     </div> 
    <% } %> 
</div> 

ファイル私EJSでこれを持っていた後、HTMLの代わりに改行文字の(エラーの箇条書きリストを作成する)

errors.forEach(function(msgObject) { 
    console.log(msgObject.message); 
    messages += "<li>" + msgObject.message + "</li>"; 
}) 
if(messages != "") { 
    messages = "<ul>" + messages + "</ul>"; 
} 

を追加しました私は= <%を置き換えますエラー%> <% - エラー%>

+0

私はあなたがそう気があれば、私の答えを受け入れる助けることができるうれしい、あなたのアプリケーションで最高の幸運! :) – Nijikokun

関連する問題