订阅添加/删除属于meteor中父文档的集合

时间:2013-05-28 22:22:26

标签: meteor

想象一下,我有2个收藏品

Post {
  _id: ...
  title: ...
}

Comment {
  _id: ...
  postId: ...
  text: ....
}

在帖子详情页面上,我希望看到帖子标题及其所有必须被动的评论。

  • 我可以声明Meteor.methods以一个请求返回帖子及其评论,但我不知道如何使评论反应。
  • 我可以先发帖子然后Meteor.subscribe根据帖子的ID发表评论,但这个解决方案需要2个连续的请求,这是不理想的。

我如何同时拥有这两个并仍然有反应意见。

谢谢。

2 个答案:

答案 0 :(得分:0)

您实际上可以在'Meteor.publish'函数中返回多个集合:

Meteor.publish("postWithComments", function(postId){
   return [Posts.find({_id: postId}), Comments.find({postId: postId})];
});

如果您订阅了这个,您的本地迷你mongo将收到两个收藏。限制是每个游标必须来自不同的集合。 Read the docs

答案 1 :(得分:-1)

如果评论被嵌入到每个帖子的相同数据库集合中,那么您可以一次性返回帖子及其相关评论。如果它们在单独的集合中(如您的情况那样),那么您将需要订阅/请求两者。

就反应性而言,Meteor的发布和订阅功能会自动将新鲜内容从服务器传送到客户端。您还可以将Session变量传递到客户端订阅函数,在这种情况下,每次Session变量更改时,您都将使用Deps.autorun自动重新运行请求。这在Meteor publish and subscribe文档中进行了讨论。