2016-11-26 6 views
0

私はMeteor and Angular 2を初めて使用しています。私はクライアント内のすべてのユーザーのリストに苦労しています。Meteor Angularすべてのユーザーを取得

users.tsしかし、これも呼ばれていません

import {Meteor} from 'meteor/meteor'; 

Meteor.publish('usersList', function() { 
    console.log('Publish from server '); 
    return Meteor.users.find({_id: {$ne: Meteor.userId()}}); 
}); 

を:私の知る限り理解されるように、私は自分のサーバー上で公開し、私は次の方法をした私のクライアント、上で購読することがあります。私はこのファイルを私のmain.tsにインポートしています。すべてのユーザーを獲得するためには、どのように公開するべきかわかりません。

Meteor-Angular2 tutorialに従って別のコレクションを作成しました。 wishes.ts

import {Meteor} from 'meteor/meteor'; 
import {Wishes} from '../../../both/collections/wishes.collection'; 

Meteor.publish('wishList', function() { 
    console.log("wishlist "+this.userId); 
    return Wishes.find(buildQuery.call(this)); 
}); 


function buildQuery(): Object { 
    const isAvailable = { 
     $and: [{ 
      owner: this.userId 
     }, { 
      owner: { 
       $exists: true 
      } 
     }] 
    } 
    return isAvailable; 
} 

私は、サーバーの私のmain.tsでそれを呼び出すと、それが働いている:ファイルは次のようです。私はファイルの1つがなぜ呼び出されているのか、そしてなぜ他のものがないのか分かりません。どんな方向にも感謝します!

答えて

0

users.tsのmeteor publishメソッドは、 'userList'を購読するすべての新しいクライアントに対してそのコールバックをトリガーします。 Meteorユーザーコレクションのすべてのユーザーを取得したい場合は、単純な検索({})によってすべてのユーザーが表示されます。さらに特定のクエリが必要な場合は、findクエリを使用して1つまたは複数ユーザー。

あなたのコードはあなたが投稿したコードスニペットからうまく見えます。

+0

残念ながら、( 'userList'を購読した後の)クライアントのMeteor.users.find({})は、現在ログインしているユーザーのみを返します。 –

+0

クライアントは、Meteor.users.find({})を使用して、クライアント側からアクセス可能なコレクションを作成するか、クライアント側でメッセージを直接クライアント側に送信します。 Meteor.users.find({})をクライアント側で使用すると、残りのことを知らないため現在のユーザーが返されます。 –

関連する問題