Javascript meteor find方法中如何传递变量参数

Javascript meteor find方法中如何传递变量参数,javascript,mongodb,meteor,Javascript,Mongodb,Meteor,当使用“qnum”变量参数作为值执行查找查询时,它不会返回任何数据。这是由于对象内部变量范围的限制吗 quick.js文件 Questions = new Mongo.Collection("questions"); if (Meteor.isClient) { var qnum = 1; Template.question.events({ "click #submit-btn": function (event, template) { //Increme

当使用“qnum”变量参数作为值执行查找查询时,它不会返回任何数据。这是由于对象内部变量范围的限制吗

quick.js文件

Questions = new Mongo.Collection("questions");

if (Meteor.isClient) {

  var qnum = 1;

  Template.question.events({

    "click #submit-btn": function (event, template) {
      //Increment question number when user click on submit button which loads the next question
      qnum += 1;
    }

  });


  Template.body.helpers({
    questions: function (qnum) {
      return Questions.find({qnum: qnum});
    }
  });
}
quick.html文件

<div class="quiz">
    <div class="score-board">
        {{#each questions}}
            {{> question}}
        {{/each}}
    </div>
</div>
</body>

<template name="question">
    <div class="qa-wrapper" id="{{qnum}}">
        <div class="questions">{{title}}</div>
        <div class="options">
                {{#each options}}
                <input type="checkbox" name="{{this}}"/>{{this}} <br />
                {{/each}}
            <button id="submit-btn">Submit</button>
        </div>
    </div>
</template>

我的直觉是,当你为模板助手
questions(qnum)
设置一个参数时,它需要一个参数,但是在
{{{each questions}}
位中,你不会传递任何东西。尝试删除template.helper def中的
qnum
,使其成为

Template.body.helpers({
  questions: function () {
    return Questions.find({qnum: qnum});
  }
});
未经测试。让我知道它是否有效

要让助手在单击按钮时重新运行,您需要使查询参数(qnum)处于被动状态。在这里,Meteor提供了多种选择,最明显的选择是在会话中存储您的
qnum

Session.set("qnum", qnum)
然后在模板帮助器查询中

return Questions.find({qnum: Session.get("qnum") });

谢谢,现在是归还物品的时候了。但是,我面临的另一个问题是,单击按钮后,递增的值不会通过Questions.find方法返回。我将更新我的答案,请检查它是否适用于您。
return Questions.find({qnum: Session.get("qnum") });