2016-11-28 11 views
0

メテオの新機能です。学習目的のために、私はすべてのユーザーの電子メールをリストしたかっただけです。しかし、ログインしたユーザーの電子メールしか見ることはできません。メテオールアカウント - パスワード、全ユーザのメールを表示

注:

  • 私は、開発環境で午前流星1.4.2
  • を使用しています。したがって、私は は '安全でない'または 'autopublish'を削除していません。私はそれが悪いことを知っている 練習。しかしこれはクイックスタートのためのものです。

    Template.usersList.helpers({ 
        users() { 
         return Meteor.users.find({}, {fields: {'username': 1, emails:1}}); 
        }, 
        email(){ 
         if(typeof this.emails === 'undefined'){ 
          console.error(this.emails, "Unauthorized Attempt"); 
          return "--NaN--"; 
         } else { 
          return this.emails[0].address; 
         } 
        } 
    }); 
    

    ブレイズテンプレート:

マイテンプレートヘルパーがどのように見える結果で

<template name="usersList"> 
    This is Users List 
    <ul> 
     {{#each users}} 
     <li>{{username}} | {{email}}</li> 
     {{/each}} 
    </ul> 
</template> 

、それはすべてのユーザーのユーザー名が表示されます。また、ログインしたユーザーの電子メールのみを表示します。他のユーザーの場合、 "emails"配列は未定義として返されます。

jessica | [email protected] 
Waqas | --NaN-- 
Bob | --NaN-- 

上記の結果jessicaがログインしています。他のユーザーの電子メールを見ることができません。

誰かがすべてのユーザーの電子メールを表示する方法を教えてもらえますか?または、正しい方向に私を指差してください?

おかげで、 アフマド

+0

あなたは何を見て、あなたの 'email'ヘルパーの内側' this'変数をチェックする必要がありますそれはを参照しています。 – Khang

答えて

2

あなたは、サーバー上でこれを追加することができます。

Meteor.publish("userData", function() { 
    return Meteor.users.find(); 
}); 

そして、これをクライアント上:

Meteor.subscribe("userData"); 

は、詳細については、documentationを参照してください。

あなたは実際に最終的にクライアントに公開する内容を制限したいと思うかもしれません。しかし、私はあなたがその考えを得ると思う。 Meteor.usersは単なるコレクションなので、他のコレクションと同じように公開することができます。

+0

クリスチャンありがとう。それは働いた:D – Waqas

0

私はpub/subを使用しなければならないことが判明しました。だから、私のために働い以下:

//

Meteor.publish("userList", function() { 
     return Meteor.users.find({}, {fields: {emails: 1}}); 
}); 

//クライアントでサーバーに

Meteor.subscribe("userList"); 
関連する問題