当前位置:K88软件开发文章中心编程语言JavaScriptMeteor → 文章内容

Meteor 高级发布机制

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-15 15:29:05

现在,每次我们发布一个帖子时,我们也自动发布其2个最新评论。而且所有都在一个订阅调用中!虽然 Meteor 还未直接实现这个方法,但是你也可以参考在 Atomsphere 里的 publish-with-relations 包,它的目标就是让这个模式更容易使用。连接不同的集合这样的订阅弹性机制还能给我们更多新知识么?当然,如果我们不使用 _publishCursor,我们不必跟着此项约束,就是在服务端的源集合需要与客户端的目标集合有同样的名称。为什么我们想这么做的一个原因就是单表继承。假设我们需要从我们的帖子中引用多种类型的对象,每一个对象存储在相同字段中但又显然是不同内容。例如,我们建立一个类似 Tumblr 的博客引擎,每个帖子具有常见的 ID、时间戳,以及标题;但是额外也有如图像、视频、链接,或者只是文字。我们可以将这些对象存储在一个单独的 'resources' 集合中,使用 type 属性来标记他们是什么类型的对象(video、image、link 等等)。同时,虽然我们有一个服务端的单一的 Resources 集合,我们也能够将单一集合转换到多个的 Videos、`Images',等等集合中。客户端的集合如下的代码: Meteor.publish('videos', function() { var sub = this; var videosCursor = Resources.find({type: 'video'}); Mongo.Collection._publishCursor(videosCursor, sub, 'videos'); // _publishCursor doesn't call this for us in case we do this more than once. sub.ready(); });我们告诉 _publishCursor (就像返回)游标会做的一样发布我们的视频,但不是将 resources 集合发布到客户端,而是我们从 resources 发布到 videos。另一个类似的主意是:发布到客户端的集合,却根本没有服务端集合!举例,你也许从一个第三方服务中抓取数据,并发布它们到一个客户端集合。由于发布 API 的灵活性,可能性是无限的。

上一页  [1] [2] 


Meteor 高级发布机制