我在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>
答案 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);
},
});
这将始终返回布尔值