Ich habe Probleme beim Konfigurieren des waitOn
Teils einer Route, bei dem einer der Abonnementparameter durch den Wert eines Dokuments bestimmt wird von einem anderen Abonnement.Verwenden von Iron Router zum WartenEin Abonnement, das von Daten aus einem Dokument abhängt, das von einem anderen Abonnement stammt
Die Sammlungen im Spiel sind Kandidaten und Interviews. Ein Interview wird einen und nur einen Kandidaten haben. Hier einige Beispieldaten:
Die Route ist wie folgt konfiguriert.
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);
};
}
});
Das Problem ist, dass ich auf das singleCandidate
Abonnement im waitOn
Verfahren keine candidateId müssen passieren, weil es in dem Interview doc gespeichert ist.
Ich habe an zwei mögliche Lösungen gedacht, aber ich mag sie nicht wirklich. Die erste ist, die Route zu etwas wie /interviews/:_id/:candidateId/conduct
zu ändern. Die zweite besteht darin, die Daten zu denormalisieren und die Informationen des Kandidaten im Interviewdokument zu speichern.
Gibt es neben diesen beiden noch weitere Möglichkeiten?
Duh ...so einfach. Ich konnte den Wald für die Bäume hier nicht sehen. Ich verwende die 'singleCandidate'-Veröffentlichung an anderer Stelle, aber ich werde eine 'interviewCandidate'-Veröffentlichung hinzufügen. Vielen Dank! –