当包装在另一个Function中时,Meteor.js中的Function始终返回False

时间:2018-11-14 00:35:07

标签: javascript meteor

我在Meteor.js中有一个函数,当我将其包装在另一个函数中时,该函数的行为不符合预期。在下面提供的示例中, 我两次使用“ if OnlyBank()”函数:在一个实例中,“ if onlyBank()”函数只是简单地放在HTML内。 (见图1) 这可以正常工作,并按预期返回True / False。 但是,当我将此函数放在另一个函数(特别是“ if currentUser”函​​数)中时,它总是返回false。 (见图2) 我怀疑这可能是本地/全局范围的问题,但我不知道如何解决此问题。谁能提供帮助?

我是Meteor的新手,而且堆栈溢出。

JavaScript

Template.body.helpers({
  onlyBank() {
    return Banks.findOne({userId: Meteor.userId()}, Banks.accountNumber:{"$exists":false}, Banks.routingNumber:{"$exists": false});
  },
});

HTML

<body>
  <div class="container">
    {{> loginButtons}}
    {{#if onlyBank}}
      True
    {{else}}
      False
    {{/if}} <!-- Figure 1. This if statement will retun True when the onlyBank's conditions are met -->
    <div class="row">
      {{#if currentUser}}
      <div class="col s8">
        {{#if onlyBank}}
          True
        {{else}}
          False
        {{/if}} <!-- Figure 2. This if statement ALWAYS returns false -->
      </div>
      <div class="col s4">
        {{> banks}}
      </div>
      {{else}}
        YOU NEED TO BE LOGGED IN FIRST
      {{/if}}
    </div>
  </div>
</body>

1 个答案:

答案 0 :(得分:0)

如果我理解正确,则Meteor.userId不是函数。

您应该使用:{userId: Meteor.userId}

也许您可以尝试一下:

Template.body.helpers({
  onlyBank() {
    return (Meteor.userId !== undefined) && (Banks.findOne({userId: Meteor.userId}, Banks.accountNumber:{"$exists":false}, Banks.routingNumber:{"$exists": false}) !== undefined);
  },
});

这将始终返回布尔值