Я использую meteor.js для написания большого модульного приложения. В моем приложении у меня есть коллекция под названием «Курсы». Схема объекта внутри коллекции, конечно, выглядит следующим образом:Метеор и несколько подписей на одну и ту же коллекцию (и тот же объект)
_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
.
Есть ли хороший текст о том, как публикация и подписка на подмножества одного и того же документа работают в реальных версиях метеоров и что мне нужно проверить, хочу ли я заставить его работать?
Или есть пакет, который упрощает ограничение доступа к полям для каждого пользователя?
Я обнаружил, что проблема заключается в операторе 'members. $', Который делает паб/подсистему думать, что в этом массиве есть только один элемент. Когда я удаляю эту часть из публикации «myCourses», появляется все содержимое массива members. Похоже, мне нужен другой способ сделать это. – Tobi