2017-01-06 14 views
0

初心者からEJSへここからEJS条件付きIF

MongoDBからデータを取得しようとしました。おそらく

router.route('/').get(function(req, res, next) { 
     mongoose.model('Event').find({}, function(err, events) { 
      if (err) { 
       return console.error(err); 
      } else { 
       res.format({ 
        html: function() { 
         res.render('events', { 
          eventData: events, 
          user: req.user, 
         }); 
         if (typeof eventData == 'object') 
          console.log('display new events: ' + eventData); 
         else 
          console.log('no events, sorry :('); 
        } 
       }); 
      } 
     }); 
    }) 

:データ、表示「otherCondition」、データがある場合、ループを行うと表示され、「リピート」と「無関係」

<% if (typeof eventData == 'object'){ %> // check if its empty/undefined 
    <% eventData.forEach(function(event) { %> // loop if exists 
     <div class="repeat"> 
      ...       // other code 
     </div> 
    <% }) %>        // end of loop 
    <div class="unrelated">     
      ...       // other code (again) 
    </div> 
<% } else { %>       // else condition 
    <div class="otherCondition">     
      ...       // other code (again) 
    </div> 
<% } %> 

EJSコード上で、以下の経路コードが存在しない場合別の愚かな質問が、誰でも私にこれを解決する方法を助けることができますか?コンソールでは、私はno events, sorry :(を取得しますが、私の<div class="otherCondition"></div>は表示されません。

ありがとうございます。

答えて

0

あなたのクエリを使用して側サーバーにのfind()方法、 だからtypeof演算EVENTDATAは、常にあなたの最初の条件は、コントローラ決して後藤otherConditionので、常に真であることを目的を返します。ですのでここでEVENTDATAは、常に配列であります。条件

<% if(constructor.eventData === Array && eventData.length > 0){ %> 
 
    <% eventData.forEach(function(event) { %> // loop if exists 
 
    <div class="repeat"> 
 
     ...       // other code 
 
    </div> 
 
    <% }) %>        // end of loop 
 
    <div class="unrelated">     
 
     ...       // other code (again) 
 
    </div> 
 
<% }else{ %> 
 
    <div class="otherCondition">     
 
     ...       // other code (again) 
 
    </div> 
 
<% } %>

場合は、最初にEVENTDATAのレンスをチェック

ベター