1

假设我有一个页面显示来自 mongodb 集合的记录:

var item = Items.findOne({name: documentName});
Session.set('item', item);

当集合准备好并找到结果时,这将使用该项目更新我的模板。现在我可以假设当 Session.get('item') 未定义时,数据正在加载并向用户显示加载图形或消息。但是,如果文档不存在,我不想无限期地向用户显示加载消息,我宁愿显示“未找到”消息。如果记录根本不存在,我如何确定并通知用户?

我想过:

  1. 将项目会话变量设置为“已加载”
  2. 在具有该值时显示加载消息
  3. 然后在集合返回未定义或文档时显示项目或“未找到”消息。

但是,这不起作用,因为查询将立即返回 undefined 直到集合可用,然后如果查询完成并且值仍然未定义,则没有任何更改并且会话变量不会更新。

我觉得我错过了一些就在我面前的把戏!有人有什么想法吗?

4

1 回答 1

1

您的解决方案应该适用于显示“加载”消息。

要显示“未找到”消息,请检查模板助手中查询结果的类型。结果将是undefined集合中没有记录时。

    Template.items.item = function(){
      var item = Items.findOne({name: documentName});
      if(typeof item == 'undefined'){
         return null;
      }
      else{
         return item;
      }
    }

在 html 代码中,使用{{#if}}..{{else}}..{{/if}}块助手作为:

    {{#if item}}
       <!-- Display your template data here -->
    {{else}}
       <!-- The template helper returned null, so display message here -->
       <span>NOT FOUND</span>           
    {{/if}}

希望这可以帮助。

于 2013-04-24T06:27:01.617 回答