假设我有一个显示来自mongodb集合的记录的页面:
var item = Items.findOne({name: documentName});
Session.set('item', item);
当集合准备就绪以及找到结果时,这将使用项目更新我的模板。现在我可以假设当Session.get('item')未定义数据正在加载并向用户显示加载图形或消息时。但是,如果文档不存在,我不想无限期地向用户显示加载消息,我宁愿显示“未找到”消息。如果记录根本不存在,我如何确定并告知用户?
我想到了:
然而,这不起作用,因为查询将立即返回undefined,直到集合可用,然后如果查询完成且值仍然未定义,则没有更改,并且会话变量不会更新。
我觉得我错过了一些正好在我面前的技巧!有人有任何想法吗?
答案 0 :(得分:1)
您的解决方案应该用于显示“加载”消息。
要显示“NOT FOUND”消息,请在模板助手中检查查询结果的类型。当集合中没有记录时,结果将为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}}
希望这有帮助。