2016-03-02 105 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)'。 –