Giả sử Question
của bạn bộ sưu tập có lược đồ sau (được đơn giản hóa cho ngắn gọn):
QuestionSchema = new SimpleSchema({
title: {
type: String,
label: "Question"
},
category: {
type: String,
label: "Category"
}
});
và Answer
của bạn bộ sưu tập có
AnswerSchema = new SimpleSchema({
text: {
type: String,
label: "Question"
},
author: {
type: String,
label: "Author"
}
question: {
type: String,
label: "Question"
}
});
Bạn có thể tiếp tục điều này bằng cách tạo hai trình trợ giúp mẫu trong đó trình trợ giúp đầu tiên chỉ trả về một mảng tài liệu câu hỏi và trình trợ giúp thứ hai lấy một id câu hỏi duy nhất làm tham số và trả về một con trỏ của tất cả các câu trả lời có id câu hỏi đó:
Template.questions.helpers({
questions: function(){
return Question.find({}).fetch();
},
answers: function(questionId){
return Answer.find({question: questionId}).fetch();
}
});
Tiếp theo, mẫu cần có {{#each}}
lồng nhau các khối với câu đầu tiên lặp qua mảng câu hỏi và chuyển câu trả lời cho mỗi câu tiếp theo dưới dạng tham số của trình trợ giúp tiếp theo.
<template name="questions">
{{#each questions}}
<h1>{{this.title}}</h1>
<ol>
{{#each answers this._id}}
<li>{{text}}</li>
{{/each}}
</ol>
{{/each}}
</template>