2017-01-06 2 views
0

Neuling zu EJS hier,EJS bedingte IF

Versucht, Daten von MongoDB zu erhalten und in Sicht anzuzeigen. Wenn es keine Daten, Anzeige "otherCondition", wenn es Daten gibt, do-Schleife und "repeat" und "unabhängige"

<% 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 Code oben, route Code unten angezeigt:

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 :('); 
        } 
       }); 
      } 
     }); 
    }) 

Wahrscheinlich eine weitere dumme Frage, aber kann mir jemand helfen, wie ich das beheben kann? In der Konsole bekomme ich no events, sorry :( aber meine <div class="otherCondition"></div> wird nicht angezeigt.

Vielen Dank im Voraus.

Antwort

0

Hier eventdata ist immer ein Array, Weil in Server-Seite Ihrer Verwendung Abfrage ist find() Methode, So typeof eventdata wird immer ein Objekt zurückgeben daher Ihre erste Bedingung ist immer wahr, so dass die Steuerung nie goto otherCondition .

besser Sie überprüfen die lenth von eventdata in der ersten, wenn die Bedingung

<% 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> 
 
<% } %>

Verwandte Themen