我正在使用meteor.js编写一个大型模块化应用程序。在我的应用程序中,我有一个名为" Courses"的集合。课程集合中对象的Schema如下所示:
_id: MongoId
title: String
intro: String
content: Object
settings: Object
secret: Object
nonSecrets: Object
members: [Object]
userId: MongoId
wantsMail: Boolean
gotMemberAt: Date
我有几个出版物:
# Publish an overview of all courses, I am Member at
Meteor.publish 'myCourses', ->
return Courses.find(
{members:{$elemMatch:{userId: @userId}}},
{fields:{title:1, intro:1, 'settings.nonsecret':1, 'members.$':1}}
)
# Single Course Detail
Meteor.publish 'singleCourse', (id) ->
return Courses.find(
id,
{fields: {title:1, intro:1, content:1, 'settings.nonSecret':1}}
)
# Admin Information of course
Meteor.publish 'singleCourseAdamin', (id) ->
return Courses.find(
id,
{fields: {title:1, settings:1, members:1}}
)
我现在的问题是,当我订阅所有三个出版物时,我不会得到除myCourses
出版物之外的其他成员。
是否有任何关于如何发布和订阅同一文档的子集在实际流星版本中工作的文本,以及如果我想让它工作,我需要检查哪些内容?
或者是否有一个软件包可以更容易地限制每个用户对字段的访问?
答案 0 :(得分:0)
这是known issue。我最近在common mistakes添加了一个关于它的部分(参见" Merge Box")。虽然有一些complicated workarounds,但您最好的选择是:
<f:selectItem itemLabel="Select One" itemValue="0" noSelectionOption="true" />
发布商)。这可能很难保证。另请注意,当第一个和最后一个发布商都处于有效状态时,您应该在myCourses
字段中遇到相同的问题。