想象一下,我有2个收藏品
Post {
_id: ...
title: ...
}
Comment {
_id: ...
postId: ...
text: ....
}
在帖子详情页面上,我希望看到帖子标题及其所有必须被动的评论。
Meteor.methods
以一个请求返回帖子及其评论,但我不知道如何使评论反应。Meteor.subscribe
根据帖子的ID发表评论,但这个解决方案需要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文档中进行了讨论。