Использование Iron Router для ожидания подписки, которая зависит от данных из документа, которые поступят из другой подписки
У меня проблемы с настройкойwaitOn
часть маршрута, где один из параметров подписки определяется значением из документа, полученного из другой подписки.
Коллекции в игре - Кандидаты и Интервью. На собеседовании будет один и только один кандидат. Вот некоторые примеры данных:
candidate = {
_id: 1
firstName: 'Some',
lastName: 'Developer'
//other props
};
interview = {
_id: 1,
candidateId: 1
//other props
};
Маршрут настроен следующим образом.
this.route('conductInterview', {
path: '/interviews/:_id/conduct', //:_id is the interviewId
waitOn: function () {
return [
Meteor.subscribe('allUsers'),
Meteor.subscribe('singleInterview', this.params._id),
// don't know the candidateId to lookup because it's stored
// in the interview doc
Meteor.subscribe('singleCandidate', ???),
Meteor.subscribe('questions'),
Meteor.subscribe('allUsers')
];
},
data: function () {
var interview = Interviews.findOne(this.params._id);
return {
interview: interview,
candidate: Candidates.findOne(interview.candidateId);
};
}
});
Проблема в том, что у меня нет кандидата для передачи наsingleCandidate
подписка вwaitOn
метод, потому что он хранится в документе интервью.
Я думал о двух возможных решениях, но мне не очень нравится ни одно из них. Первое, чтобы изменить маршрут на что-то вроде/interviews/:_id/:candidateId/conduct
, Второй - денормализовать данные и сохранить информацию о кандидате в документе интервью.
Есть ли другие варианты для достижения этой цели, кроме этих двух?