流星如何避免全部发布

时间:2016-03-09 15:39:24

标签: meteor

在我遇到这个问题之前,我以为我理解了Meteor中的pub / sub。

假设您有许多博客条目供公众使用,用户导航到/:blogId。

您使用类似

的内容
Blogs.findOne(FlowRouter.getParam('blogId'));

目前,在服务器端,我正在发布所有博客条目。

Meteor.publish("blogs", function () {
    return Blogs.find({});
});

我猜我应该只发布请求的博客条目:

Meteor.publish("blogs", function (_id) {
    return Blogs.find(_id);
});

这里的最佳做法是什么?

2 个答案:

答案 0 :(得分:0)

你的问题完全正确:

Meteor.publish("oneBlog", function (_id) {
  return Blogs.find(_id); // must return a *cursor* or array of cursors, not an object
});

Meteor.publish("allBlogs", function () {
  return Blogs.find();
});

从客户端根据路由参数订阅oneBlog

Meteor.subscribe("oneBlog", FlowRouter.getParam('blogId'));

答案 1 :(得分:-1)

您可以为特定路线制作另一个出版物(只返回一个)。