2016-03-02 104 views
0

在我的網絡應用程序中,一些「新聞和事件條目」具有封面圖像,有些則不會(圖像與CollectionFS一起存儲)。下面是一個例子用的圖像(關鍵是coverImageId):流星:模板總是返回true

JSON

{ 
    "_id" : "gDPwfDJFxh3y7NBBK", 
    "title" : "EGOS 2015 reminder: Open Organizations for an Open Society?", 
    "description" : "\n\t\t   \t\t\n\t\t   \t\tOpen Organizations for an Open Society? Practicing Openness in Innovation, Strategy and Beyond; Convenors: Leonhard Dobusch, Freie Universität Berlin, Georg von Krogh, ETH Zurich, Switzerland, Richard Whittington, Oxford University, Link to website: : http://bit.ly/EGOS15Open\n\t\t   \t\n\t\t   \t", 
    "type" : "news", 
    "createdAt" : ISODate("2016-02-28T20:30:09.316Z"), 
    "coverImageId" : "teEfXMANGbSn4vWkD" 
} 

模板:

<div class="row text-left"> 
    {{#each newsEventsData}} 
    <div class="col-sm-4"> 
     <div class="caption"> 
     {{#if imageExists}}  
      <h4>TRUE {{title}}<img alt="news thumbnail" class="news-thumbnail" src="{{ coverImage.url }}" /></h4> 
     {{else}} 
      <h4>FALSE {{title}}</h4> 
     {{/if}}           
     <p class="text-muted">{{{description}}} <a href="{{pathFor route = 'newsAndEventsPage'}}" class="textlink">read more </a></p> 
    </div> 
    </div> 
    {{/each}} 
</div> <!-- ROW --> 

如果有一個圖像,該圖像被示出。所以,這是有效的。但是,else部分永遠不會呈現。我假設我的助手呈現爲真,因爲如果一個文檔包含coverImageId就足夠了。

助手:

Template.allNewsEvents.helpers({ 
    newsEventsData: function() { 
    if(Session.equals("newsEventsSeeMore","no")) { 
     return NewsEvents.find({type: { $in: Session.get('newsEventsViewMain')}}, {sort: {createdAt: -1}, limit: 3}); 
    } 
    else { 
     return NewsEvents.find({type: { $in: Session.get('newsEventsViewMain')}}, {sort: {createdAt: -1}}); 
    } 
    }, 
    imageExists: function() { 
    return NewsEvents.find({_id:this._id},{coverImageId: { $exists: true } }); 
    } 
}); 

任何幫助非常感激。

回答

1

find返回一個遊標,它是一個對象,並且總是計算爲true。你想:

imageExists: function() { 
    var event = NewsEvents.findOne({_id:this._id}); 
    if(event && event.coverImageId) { 
     return true; 
    } else { 
     return false; 
    } 
    } 
+0

中仍返回true'''else'''part :( –

+1

所以我認爲你希望它返回false如果NewsEvent沒有coverImageId我被誤解的問題。第一個,嘗試編輯的代碼 –

+1

也許'!!(event && event.coverImageId)'。 –