Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Meteor 确定集合是否已准备就绪且文档是否存在_Meteor - Fatal编程技术网

Meteor 确定集合是否已准备就绪且文档是否存在

Meteor 确定集合是否已准备就绪且文档是否存在,meteor,Meteor,假设我有一个显示mongodb集合记录的页面: var item = Items.findOne({name: documentName}); Session.set('item', item); 当集合准备就绪并找到结果时,这将使用该项更新我的模板。现在我可以假设,当Session.get('item')未定义时,数据正在加载,并向用户显示加载图形或消息。但是,如果文档不存在,我不想无限期地向用户显示加载消息,我宁愿显示“未找到”消息。如果记录根本不存在,我如何确定并通知用户 我想: 将it

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

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

我想:

  • 将item会话变量设置为类似“loaded”的值
  • 显示具有该值的加载消息
  • 然后在集合返回未定义或文档时显示项或“未找到”消息
  • 但是,这不起作用,因为在集合可用之前,查询将立即返回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}}
    
    {{#if item}
    {{else}
    找不到
    {{/if}
    

    希望这有帮助。

    您的解决方案应该可以用于显示“正在加载”消息

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

        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}}
    
    {{#if item}
    {{else}
    找不到
    {{/if}
    

    希望这有帮助。

    在这里看到我的答案:谢谢,而且,这很好地解决了问题!在这里看到我的答案:谢谢,而且,这很好地完成了任务!除非我误解了您的建议,否则这仍然会导致用户无限期地看到加载消息,因为当集合返回未定义时,已加载会话变量已设置。。。如果文档不存在,它总是会这样。我误解了您的建议。这仍然会导致用户无限期地看到加载消息,因为当集合返回未定义时,已加载的会话变量已设置。。。如果文档不存在,它总是会这样做