分页流星发布不会返回记录

时间:2017-09-27 20:58:26

标签: pagination publish-subscribe meteor-blaze meteor-helper

我绝对知道这个片段有问题,但无法找到完成它的正确方法。我想分页显示学生的页面。如果我明白地说明这个return SchoolStudents.find();,它可以完美地归功于所有学生,但这会破坏分页的主要目的。我要么不确定问题出在哪里,要么在发布函数中,要么在辅助函数中。我想要实现的是,应该对SchoolStudents colleciton中的记录进行分页,以在页面上显示2条记录。

这是自动运行

Session.setDefault('skip', 0);
Template.view.onCreated(function () {
    Session.setPersistent('ReceivedSlug', FlowRouter.getParam('myslug'));
    this.autorun(function () {
        Meteor.subscribe('SchoolStudents', Session.get('skip'));
    });
});

这是辅助方法

students(){
        let myslug = trimInput(Session.get('ReceivedSlug'));
        if (myslug) {
            let mySchoolDoc = SchoolDb.findOne({slug: myslug});
            if (mySchoolDoc) {
                let arrayModuleSchool = StudentSchool.find({schoolId: mySchoolDoc._id});
                if (arrayModuleSchool) {
                    var arrayStudentIds = [];
                    arrayModuleSchool.forEach(function(studentSchool){
                       arrayStudentIds.push(studentSchool.studentId);
                    });
                    let subReadiness = SchoolStudents.find({_id: {$in: arrayStudentIds}}).fetch();
                    if (subReadiness) {
                       return subReadiness;
                    } 
                }
            }
        } 
    } 

这是发布方法

Meteor.publish('SchoolStudents', function (skipCount) {
  check(skipCount, Number);
    user = Meteor.users.findOne({_id:this.userId})
    if(user) {
        if(user.emails[0].verified) {
           return SchoolStudents.find({userId: this.userId}, {limit: 2, skip: skipCount});
        } else {
           throw new Meteor.Error('Not authorized');
           return false;
        }
     }
});

Blaze模板

<section class="tab-section" id="content4">
    {{#each student in students}} 
    <div class="row" style="margin-top: -20px;">
    <!-- Begin Listing: 609 W GRAVERS LN-->
      <div class="brdr bgc-fff pad-10 box-shad btm-mrg-20 property-listing card-1">
          <div class="media">
              <div class="media-body fnt-smaller">
                  <a href="#" target="_parent"></a>
                  <h4 class="media-heading"><a href="/student/{{student.slug}}" target="_parent">{{student.firstname}}  {{student.lastname}}</a></h4>
                  <p class="hidden-xs" style="margin-bottom: 5px; margin-top: -10px;">{{trimString student.useremail 0 110}}</p><span class="fnt-smaller fnt-lighter fnt-arial">{{course.createdAt}}</span>
              </div>
          </div>
      </div><!-- End Listing-->
  </div>
  {{/each}}
    <ul class="pager">
        <li class="studentprevious"><a href="">Previous</a> </li>
        <li class="studentnext"><a href="">Next</a> </li>
    </ul>
  </section>

分页事件

'click .studentprevious': function () {
        if (Session.get('skip') > 0 ) {
            Session.set('skip', Session.get('skip') - 2 );
        }
    },

    'click .studentnext': function () {
        Session.set('skip', Session.get('skip') + 2 );
    }

0 个答案:

没有答案