こんにちは。Meteor初心者です。
meteor remove insecure した後で、サーバで判定した結果を、どうやって{{#IF}}に認識してもらうか、というところで行き詰っています。

【 やりたいこと 】
{{#each}}を使って、データベースのカーソルをsubscribeするのではなく、
{{#IF}}を使って、適当なテキストを、管理者のメールアドレスでログインした相手にだけ見せたいのですが、方法がわかりません。

【 症状 】
後述のようなコードですが、サーバ側で管理者かどうかをチェックする部分は、きちんとtrue/falseを判定できています。しかし、クライアント側にその結果が戻されず、undefined になってしまいます。

【 調べて考えたこと 】
http://docs.meteor.com/#/full/meteor_call
には、"On the client, if you do not pass a callback and you are not inside a stub, call will return undefined, .." とあるので、まさに症状に合致します。それではということで callbackで書くと、
1.非同期なので、判定のタイミングが遅いと、{{#IF}}に反映されないおそれがある?
2.callback関数で判定したtrue/falseの結果を、もとの{{#IF}}まで戻す方法がわからない。
という問題を抱えています。2は最悪、グローバル変数かデータベースに保存すればいいのかとも思いますが・・

こうしたケースは、普通にありそうに思うのですが、何かスマートな方法をご存じないでしょうか。

【 コード 】

ーclient.htmlーーーーーーーーーーーーーー
  <template name="showToAdmin">
    {{#if showToAdminText}}
      適当なテキスト
    {{/if}}
  </template>
ーclient.jsーーーーーーーーーーーーーー
  Template.showToAdmin.helpers({
    'showToAdminText':function(){
      return Meteor.call('showToAdminText');
    }
  });
ーserver.jsーーーーーーーーーーーーーー
  Meteor.methods({
    'showToAdminText':function() {
      var currentUserId = this.userId;
      if (currentUserId) {
        var address = Meteor.users.findOne(currentUserId).emails[0].address;
        return  (address == 'admin@gmail.com');
      }
      return false;
    }
  });