我第一次使用Meteorjs和MongoDB。我正在研究Q& A应用程序。我有一个使用Meteor数据库调用的对象列表。我想对列表进行循环操作,并希望将其中一个属性拆分为长度50,然后将这些拆分对象的列表发送到数据库。我有这个是
Template.questions.questions = function () {
questions= Meteor.questions.find({topic_id: Session.get("currentTopicId")});
return questions
}
问题列表中的每个问题对象都有一个属性question_text。使用循环我想将此属性拆分为50的长度,然后想要将其推送到空列表并返回该列表。喜欢
questions_list=[]
for(i=0;i<questions.length;i++){
question=questions[i].question_text[0:50] // python syntex to get first 50 char of a string
questions_list.push(question
}
return questions_list
和我的HTML就像
<tbody>
{{#each questions}}
<tr>
<td class="span2" style="overflow:hidden;width:50px">
<a href="#" data-id="{{_id}}" class="edit"> {{question_text}}</a>
</td>
</tr>
{{/each}}
</tbody>
建议我们如何在meteorjs中解决这个问题。我的问题是,当我尝试遍历此问题列表时,有许多属性,如收集,结果,查询。在这里,我无法迭代这个对象列表。
以同样的方式我怎么能得到meteorjs抛出的错误信息
答案 0 :(得分:4)
这将为您提供与查询匹配的所有问题的缩短文本列表:
var questions = Questions.find({...}).map(function(question) {
return question.text.substr(0,50);
});
您可以直接在帮助程序中使用它:
Template.questions.questions = function () {
return Questions.find({...}).map(function(question) {
return question.text.substr(0,50);
});
};
顺便说一下,Questions.find({...})
不返回问题的列表,而是一个可用于有效处理查询数据的游标对象(如map
上面的方法)。要获取原始数组,您需要在该游标上使用fetch
:Questions.find({...}).fetch()
。
答案 1 :(得分:2)
如果您只是显示数据,则可以创建一个把手帮助器:
Template.questions.helpers({
first50: function(question) {
return question.text.substr(0,50);
}
});
然后添加助手:
Template.questions.questions = function() {
return Questions.find({...});
};
然后在你的模板中你可以做到:
<tbody>
{{#each questions}}
<tr>
<td class="span2" style="overflow:hidden;width:50px">
<a href="#" data-id="{{_id}}" class="edit"> {{first50 question_text}}</a>
</td>
</tr>
{{/each}}
</tbody>