我有一个包含嵌入式注释数据的帖子集合。 在每个帖子视图页面中,我需要发布2个游标:一个女巫包含所有帖子,没有他们的评论字段(表现)在一些小部件中显示,另一个女巫包含所选帖子及其评论。服务器端代码如下:
Meteor.publish('allPosts', function() {
return Posts.find({}, {fields: {'comments':0}})
})
Meteor.publish('singlePost', function(slug) {
return Posts.find({slug: slug})
})
在帖子视图模板中,我订阅了这两个,但是当我使用
时Posts.findOne({slug: slug})
我怎么知道使用女巫发布光标?我怎么选择一个?
答案 0 :(得分:2)
在客户端上查询Posts
时,您正在查询该集合上所有活动订阅的并集。在这种情况下,如果您使用该特定singlePost
订阅了slug
,您将获得完整的文档。如果还没有,你就不会得到评论。
另一个例子:
Meteor.publish("allSummaries", function () {
return Posts.find({}, {fields: {title: 1, date: 1}});
});
Meteor.publish("myPosts", function () {
return Posts.find({creator: this.userId}, {fields: {title: 1, rating: 1}});
});
Meteor.publish("singlePost", function (_id) {
return Posts.find({_id: _id}, {fields: {title: 1, body: 1});
});
假设一个客户端使用userId" me"订阅了allSummaries
,myPosts
和singlePost
(_id
的" 3")。该集合包含以下文档:
{_id: "1", title: "Post 1", date: "yesterday", creator: "someone else", rating: 3}
{_id: "2", title: "Post 2", date: "today", creator: "me", rating: 4}
{_id: "3", title: "Post 3", date: "5 days ago", creator: "someone else", rating: 2}
对于帖子1,客户端只会看到title
和date
(和_id
) - 从allSummaries
发布 - 但没有其他内容。对于帖子2,他们会看到title
,date
和rating
- date
来自allSummaries
,title
来自allSummaries
myPosts
来自rating
的1}}和myPosts
以及title
。对于第3篇文章,他们会看到date
,body
和rating
,但不是{{1}}。