延迟加载流星订阅

时间:2017-11-22 08:52:20

标签: mongodb meteor lazy-loading

假设我在呈现页面时订阅了10个文档,并在需要时订阅了更多文档。基本上我正在向用户展示图像。因此,当页面打开时,我想订阅前5个文档。现在,当用户在第三个文档上时,我想订阅下一个5.有关如何继续的任何帮助吗?

我可以使用mongodb的limit属性订阅前10个文档。我知道什么时候开始下一个meteor.subscribe调用,但我应该怎么说它应该订阅接下来的五个文件

1 个答案:

答案 0 :(得分:1)

执行此操作的简单模式是使用Session变量或reactiveVar来跟踪要加载的项目数,然后Tracker.autorun()在更改时自动更新订阅

初始化(当您设置布局时):

const oldInvitation = await Invitation.findOne({ email, companyCode });
if (oldInvitation && new Date() < oldInvitation.auth.expires) {
    responseObj.email ='User has already been invited to join this company'; 
    continue;
    }
if (oldInvitation && new Date() > oldInvitation.auth.expires) {
    const clearInvitation = await Invitation.remove({email});
    }
const invitation = new Invitation({
                email,
                company,
                companyCode,
                inviter,
                invitedRole
            });
try { const newInvitation = await invitation.save();} 
catch (e) {
            console.log('error saving invitation ', e.message);
            responseObj.email = e.message;
            continue;
          }

跟踪器:

Session.set('nDocs',10);

事件处理程序(当用户在您的情况下查看第3个文档时触发):

Tracker.autorun(() => {
  Meteor.subscribe('myPublication', Session.get('nDocs'));
});