如何知道在流星中发送给客户端的文档

时间:2015-01-02 04:30:29

标签: meteor publish-subscribe

我的刊物根据startlimit发送有限数量的记录

Metero.publish("posts",function(start,limit){
 return Posts.find({},{"start":start,"limit":limit});
});

我正在订阅autorun函数中的发布函数。

我的问题是我在客户端中已经有很少的posts集合记录被另一个表使用

当前发布功能可能包含已存在于客户端

中的记录

我只想知道当前发布函数发送的记录。

欢迎任何黑客或工作场所。

修改 我想显示那些在表中发布的记录,因为我已经在客户端中有一些数据。它需要过滤掉发布函数发送给客户端的记录

3 个答案:

答案 0 :(得分:2)

试试这个发布功能,

Meteor.publish('posts', function(limit) {
  if (limit > Posts.find().count()) {
    limit = 0;
  }

  return Posts.find({ },{limit:limit});
});

现在在 client.js

Template.Posts.created = function() {
  Session.setDefault('limit', 10);
  Tracker.autorun(function() {

    Meteor.subscribe('getPosts', Session.get('limit'));
  });
}

现在你可以使用这个助手了

Template.Posts.helpers({
  posts: function() {
    return Posts.find({ }, { limit: Session.get('limit') });
  }
});

并像在每个帮助者的任何正常助手一样使用它

<template name="Posts">
{{#each posts}}
{{namePost}} <!-- or whatever register on the posts mongo document -->
{{/each}}
<!-- button to load more posts -->
<button class="give-me-more">Click for more posts </button>
</template>

现在如果你想增加10 x 10的帖子数量,请使用此功能

incrementLimit = function(inc=10) {
  newLimit = Session.get('limit') + inc;
  Session.set('limit', newLimit);
}

并在像这样的点击事件上调用它

Template.Posts.events({
  'click .give-me-more': function(evt) {
    incrementLimit();
  }
});

现在,每次创建帖子模板时,您在每个使用此帮助程序的模板上只会获得10个帖子,并且每次单击按钮时加载10x

这与Gentlenode

中的代码相同

我刚刚添加了HTML,希望对您有所帮助

答案 1 :(得分:0)

您是否考虑过将其记录到控制台?

Metero.publish("posts",function(start,limit){
 var currentPosts = Posts.find({},{"start":start,"limit":limit});
 console.log(currentPosts);
 return currentPosts;
});

答案 2 :(得分:-1)

我最终使用了&#39;客户端集合&#39;使用不同表的自定义出版物