我正在寻找一种方法,在我的模板组中检索具有近50个文档的“问题”集合的3个文档。在模板中显示的前3个文档(问题)之后,如果用户想要检索接下来的3个文档或者只是完成,则用户应该决定(按下按钮)。
我还没有找到从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>
答案 0 :(得分:1)
我从你的问题中看到,我只能说你需要在获取文件时在功能中使用跳过和限制。理想情况下,您应该删除&#34;不安全&#34;和&#34;自动发布&#34;首先打包并在代码中使用PUB / SUB技术。
以下是可用于获得所需结果的代码。
在服务器端,您应该使用跳过计数发布代码。
<强> PROJECT /服务器/ publish.js 强>
Meteor.publish('getGroupQuestions', function(skipcount){
return Questions.find(
{$and: [ {qNumber : {$nin: answeredQ}},
{sort : {qNumber:1}}
},{limit : 3, skip : skipCount}
});
});
在客户端声明下面的代码作为会话变量,以相应地跳过记录数3;
<强>的客户机/模板/ myapp.js 强>
Session.setDefault('skip', 0);
Deps.autorun(function(){
Meteor.subscribe('getGroupQuestions', Session.get('skip'));
});
Template.questions.events ({
"submit .load-more" : function() {
Session.set(Session.get('skip') + 3)
}
});
在myapp.html中,您必须进行一些小改动,并将按钮命名如下;
<强>的客户机/模板/ myapp.html 强>
<button name="load-more" class="btn btn-warning js-load-more">Save and load more Q</button>
流程说明