Я ищу способ получить в моих группах шаблонов из 3-х документов коллекции «Вопросы», которые имеют почти 50 документов. После первых трех документов (вопросов), показанных в шаблоне, пользователь должен решить (нажать кнопку), если он хочет получить следующие 3 документа или просто закончить.Как получить группы из n документов из курсора (коллекция)
Я не нашел способ, чтобы загрузить вопросы от 3 до 3. Это мой код:
collections.js:
Questions = new Mongo.Collection("questions");
myapp.js:
var lastQ=0
Template.questions.helpers ({
getGroupQuestions: function(){
//Ideally if I only query one time the entire collection, and store in local var
var listOfQuest = Questions.find({$and: [ {qNumber: {$nin: answeredQ}}, {qNumber:{$gt:lastQ}}]}, {sort:{qNumber:1}});
lastQ = lastQ + 3;
return {"Obj1":listOfQuest.fetch()[0], "Obj2":listOfQuest.fetch()[1], "Obj3":listOfQuest.fetch()[2]}; //This is not working, the returned object cant be read in template
}
});
myapp.html:
<template name="questions">
<h4> Tell us a little about yourself: </h4>
<form class="js-add-answers" id="add-answers">
{{#each getGroupQuestions}}
<label for="{{qNumber}}">{{qDescription}}</label>
<input type="text" class="form-control" id="{{qNumber}}" placeholder="{{qHints}}"/>
<p></p>
{{/each}}
<button class="btn btn-warning js-join-event">Save and Join</button>
<button class="btn btn-warning js-load-more">Save and load more Q</button>
</form>
</template>
Спасибо! Ваш код выглядит довольно чистым ... Просто сомневаюсь: должен ли я вызвать результат в моем шаблоне с помощью такого помощника: 'template.questions.helpers ({threeQuest: function() {return Questions.find()}}); ' Интересно, правильно ли это, так как у меня есть другая подписка на вопросы в другом шаблоне, которые требуют загрузки всей коллекции. – Ruben
Объем подписки остается неизменным только в шаблоне. Делайте подписки на отдельных шаблонах отдельно, вы будете чувствовать себя быстрее рендеринга. Итак, Дорогой друг, независимо от того, сколько мест вы используете подзаголовок, рендеринг в помощнике шаблона зависит от условия, которое вы передаете в методе поиска. Я дал вам код, чтобы найти точные три свежих вопроса. Вы также можете скопировать его в помощнике шаблона. Никакого вреда не должно быть сделано. В любом случае другая подписка на шаблоны невредима. Огромное спасибо. –
Хорошо. Еще один вопрос (будьте терпеливы с этим новичком, пожалуйста = S): Как я подписываюсь на свой шаблон? Должен ли я помещать «sub» внутри помощника шаблона? Уже я поместил свою подписку внутри Meteor.isClient и создал помощника, как упоминалось выше, но запрос Questions.find в хелпере извлекает все записи из коллекции, а не только необходимые 3. Я думаю, что проблема связана с моей другой подпиской, которая приносит все записи из «Вопросов» в minimondodb. Эта подписка также требуется для другого шаблона. – Ruben