2017-09-26 67 views
0

我一直在这一段时间。问题在于这行代码从未得到执行let userSchool = SchoolDb.findOne({slug: Session.get('ReceivedSlug')});当我登录控制台时,我发现slug是动态的,因为它假设从db中获取记录。我该怎么办? 的oncreated模板FindOne从未得到执行流星js

Template.view.onCreated(function() { 
    Session.set('ReceivedSlug', FlowRouter.getParam('myslug')); 
    this.autorun(function() { 
     Meteor.subscribe('SingleSchool', Session.get('ReceivedSlug')); 
    }); 
}); 

助手功能

singleSchool: function() { 
     if (Meteor.userId()) { 
      console.log('reactive this ---- ' +Session.get('ReceivedSlug')); 
      let userSchool = SchoolDb.findOne({slug: Session.get('ReceivedSlug')}); 
      if (!userSchool) { 
       Bert.alert('School not present', 'danger', 'growl-top-right'); 
      } else { 
       console.log('school name ----' +userSchool.slug); 
       return userSchool; 
      } 
     } 
    }, 

回答

0

可否请您检查订阅是否已经获取的数据。同时在内部控制台发布当slug改变时是否发布数据。

使用下面的代码检查,如果订阅工作

Meteor.subscribe('SingleSchool', Session.get('ReceivedSlug'), { 
    onReady: function(){ 
     console.log(SchoolDb.find({}).fetch()); 
    } 
});