如何知道在 meteor 中哪些文档被发送给了客户端

how to know which docs are sent to the client in meteor

我有一个出版物,它根据 startlimit

发送有限数量的记录
Metero.publish("posts",function(start,limit){
 return Posts.find({},{"start":start,"limit":limit});
});

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

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

当前的发布功能可能有客户端已经存在的记录

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

也欢迎任何破解或解决方法。

编辑 我想显示那些发布在表中的记录,因为我已经在客户端中有一些数据很难过滤掉发布功能发送给客户端的记录

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

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

试试这个发布功能,

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>

现在,如果您想将 post 的数量增加 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();
  }
});

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

这与 Gentlenode

中的代码相同

我刚刚添加了 HTML,希望这对你有帮助

我最终使用 'client side collections' 和不同表格的自定义发布