Итак, я использовал publishComposite для объединения коллекции в Meteor. У меня есть родительская коллекция (Subscriptions) с внешним ключом user_id. Я просматриваю имя пользователя в коллекции Meteor.users, чтобы получить фактическое имя пользователя, но как это сделать на самом деле в шаблоне html. Мои данные подписки есть, но как я действительно ссылаюсь на имя пользователя?Метеор, опубликовать: композитный. как получить доступ к объединенным данным в шаблоне?
Вот код публикации:
//publish subscriptions course view
Meteor.publishComposite('adminCourseSubscriptions', function(courseId){
return {
//get the subs for the selected course
find: function(){
return Subscriptions.find(
{course_id: courseId}
);
},
children:
[
{
//get the subscriber details for the course
find: function(sub){
return Meteor.users.find({_id:sub.user_id});
}
}
]
};
});
вот шаблон subdcriptions:
Template.adminCourseDetail.helpers({
courseDetail: function(id){
var id = FlowRouter.getParam('id');
return Courses.findOne({ _id: id });
},
courseSubscriptions: function(){
var id = FlowRouter.getParam('id');
return Subscriptions.find({course_id:id})
},
users: function(){
return Meteor.users.find();
}
});
и шаблон (который мусор) п.с. детали курса приходят из отдельной коллекции. Это было проще, и я думаю, что более эффективный, чтобы получить детали по отдельности, и это работает отлично. Это просто имя пользователя, которое я не могу отобразить правильно:
<template name="adminCourseDetail">
<h1>Course Details</h1>
<p>Title: {{courseDetail.title}}</p>
<p>Description: {{courseDetail.description}}</p>
<p>Start Date: {{courseDetail.startDate}}</p>
<p>Number of sessions: {{courseDetail.sessions}}</p>
<p>Duration: {{courseDetail.duration}}</p>
<p>Price: {{courseDetail.price}}</p>
<p>{{userTest}}</p>
<a href="#">edit</a>
<a href="#">delete</a>
<h2>Course Subscriptions</h2>
{{#each courseSubscriptions}}
<div class="row">
<div class="col-md-3">{{username}}</div>
<div class="col-md-3">{{sub_date}}</div>
</div>
{{/each}}
</template>
Заранее благодарим за любые предложения!
С благодарностью Matthias я полностью забыл, что при вызове помощника изнутри каждого блока вспомогательный вызов вызывается в контексте курсора, который вы перебираете, тем самым делая данные в этом курсоре доступными с помощью «этого». Я совершенно смутился, пытаясь понять, как связать данные из коллекций. :) –