2012-10-22 7 views
5

私は自分のユーザーのドキュメントに保存されているFacebookのアクセストークンをクライアント上で欲しいです。 meteor documentationに続いて、新しいパブリッシュコールを追加するだけです。 server.jsでMeteor.usersコレクションにフィールドを追加するには

Meteor.publish("access_token", function() { 
    return Meteor.users().find(
    { _id : Meteor.userId() }, 
    {'services.facebook.accessToken': 1} 
); 
}); 

client.jsに:私は迷子にどこ

Meteor.subscribe("access_token"); 

さてさて、ここです。 accessTokenはMeteor.usersコレクションに表示されるべきですか? Like:

var user = Meteor.users.findOne({ _id : Meteor.userId() }); 
console.log(user); // includes services.facebook.accessToken now 

明らかに、私は上記を試しましたが、accessTokenは表示されません。はい、私はmongoドキュメントにservices.facebookが含まれていることを確認しました。

だから私は新しいクライアントコレクションを作成し、どういうわけか新しいパブリッシュに接続しますか? accessTokenを入手するにはどうしたらいいですか?

答えて

9

あなたはあなたがしたいフィールド公開することができ、キーワード

Meteor.users.find({ _id: this.userId }, 
    { fields: { the-extra-fields-that-you-want-go-here: 1 } } 
); 

http://docs.meteor.com/#fieldspecifiers

+0

をあなたは二重のかっこを削除する必要があり、これはエラーが発生。もし私が間違っていないなら、正しい答えは:Meteor.users()。find({_id:this.userId}、 {フィールド:{extra_fields:1}} ); ' – Mercutionario

+1

あなたは正しいです。間違った入力~~~ – crapthings

4

「フィールド」を使用する必要があります:実際に

Meteor.publish(null, function() { 
    Meteor.users.find({}, {fields: {profile: 1, username: 1, ...}}) 
} 
+1

これは必ずしも正しいとは限りません。ユーザーコレクション(users-online plugin)を公開している場合、Meteor.users()はusers.findを持つすべてのオンラインユーザーを検索します。 –

関連する問題