Кто-нибудь знает, как изменить наборы полей в публикации (Meteor.publish или Meteor.publishComposite) на основе определенных характеристик/значений полей записи по отношению к вошедшему в систему пользователю?
Я использовал publishComposite с курсорами на одном уровне, например:
Meteor.publishComposite("games", [
{
find: userRecord,
children: [
{
find: gamesWeArePlaying
}
]
},
{
find: userRecord,
children: [
{
find: gamesWeOwn
}
]
},
{
find: userRecord,
children: [
{
find: examineWithAnalysis
}
]
},
{
find: userRecord,
children: [
{
find: examineWithoutAnalysis
}
]
},
{
find: userRecord,
children: [
{
find: allGames
}
]
}
]);
Каждая функция поиска возвращает курсор с соответствующими записями и набором полей, разрешенным для этого пользователя в этом состоянии. Просто имейте в виду, что в каждом из дочерних элементов он найдет набор уникальных записей, но поля, которые он возвращает, относятся к этому курсору. Наиболее распространенными являются переходы от gamesWeArePlaying к экзамену с анализом, а в случае учителя/ученика экзамен с анализом — к экзамену без анализа.
Но происходит следующее: когда игра (то есть отдельная запись) переходит от одного курсора к другому, базовая структура не может отправить клиенту правильные измененные поля. Записи minimongo выходят из строя и даже не соответствуют тому, что на самом деле находится в базе данных серверов.
Итак, мой вопрос: каков наилучший способ реактивно вернуть набор записей, где каждая отдельная запись имеет определенный набор полей, возвращаемый на основе характеристик указанной записи?