Function in Meteor.js always returns False when wrapped inside another Function












0















I have a function in Meteor.js which does not behave as expected when I wrap it inside another function. In the example provided below,
I use the "if OnlyBank()" function twice: In one instance, the "if onlyBank()" function is simply dropped inside HTML. (see figure 1)
This works, and returns True/False as expected.
However, when I put this function inside another function (specifically, the "if currentUser" function) it always returns false. (see figure 2)
I suspect this may be a problem with local/global scope, but I do not know how to fix this problem. Can anyone provide any help?



I am new to Meteor and stack overflow.



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>









share|improve this question



























    0















    I have a function in Meteor.js which does not behave as expected when I wrap it inside another function. In the example provided below,
    I use the "if OnlyBank()" function twice: In one instance, the "if onlyBank()" function is simply dropped inside HTML. (see figure 1)
    This works, and returns True/False as expected.
    However, when I put this function inside another function (specifically, the "if currentUser" function) it always returns false. (see figure 2)
    I suspect this may be a problem with local/global scope, but I do not know how to fix this problem. Can anyone provide any help?



    I am new to Meteor and stack overflow.



    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>









    share|improve this question

























      0












      0








      0








      I have a function in Meteor.js which does not behave as expected when I wrap it inside another function. In the example provided below,
      I use the "if OnlyBank()" function twice: In one instance, the "if onlyBank()" function is simply dropped inside HTML. (see figure 1)
      This works, and returns True/False as expected.
      However, when I put this function inside another function (specifically, the "if currentUser" function) it always returns false. (see figure 2)
      I suspect this may be a problem with local/global scope, but I do not know how to fix this problem. Can anyone provide any help?



      I am new to Meteor and stack overflow.



      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>









      share|improve this question














      I have a function in Meteor.js which does not behave as expected when I wrap it inside another function. In the example provided below,
      I use the "if OnlyBank()" function twice: In one instance, the "if onlyBank()" function is simply dropped inside HTML. (see figure 1)
      This works, and returns True/False as expected.
      However, when I put this function inside another function (specifically, the "if currentUser" function) it always returns false. (see figure 2)
      I suspect this may be a problem with local/global scope, but I do not know how to fix this problem. Can anyone provide any help?



      I am new to Meteor and stack overflow.



      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>






      javascript meteor






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 14 '18 at 0:35









      Gavin William KerrGavin William Kerr

      122




      122
























          1 Answer
          1






          active

          oldest

          votes


















          0














          if I got it right, the Meteor.userId is not a function.



          You should use: {userId: Meteor.userId}



          Maybe you give this a try:



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


          This will return always a boolean value






          share|improve this answer























            Your Answer






            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "1"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53291491%2ffunction-in-meteor-js-always-returns-false-when-wrapped-inside-another-function%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            0














            if I got it right, the Meteor.userId is not a function.



            You should use: {userId: Meteor.userId}



            Maybe you give this a try:



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


            This will return always a boolean value






            share|improve this answer




























              0














              if I got it right, the Meteor.userId is not a function.



              You should use: {userId: Meteor.userId}



              Maybe you give this a try:



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


              This will return always a boolean value






              share|improve this answer


























                0












                0








                0







                if I got it right, the Meteor.userId is not a function.



                You should use: {userId: Meteor.userId}



                Maybe you give this a try:



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


                This will return always a boolean value






                share|improve this answer













                if I got it right, the Meteor.userId is not a function.



                You should use: {userId: Meteor.userId}



                Maybe you give this a try:



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


                This will return always a boolean value







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 14 '18 at 1:11









                Tom FreudenbergTom Freudenberg

                1,098723




                1,098723






























                    draft saved

                    draft discarded




















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53291491%2ffunction-in-meteor-js-always-returns-false-when-wrapped-inside-another-function%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Bressuire

                    Vorschmack

                    Quarantine