は、フィールドのみを返すように分野オプションを使用しますあなたはMongoの質問から欲しいです。
Meteor.publish("extraUserData", function() {
var user = Meteor.users.findOne(this.userId);
var fields;
if (user && user.role === 'counselor')
fields = {pricePerSession: 1};
else if (user && user.role === 'student')
fields = {counselor: 1, sessionsRemaining: 1};
// even though we want one object, use `find` to return a *cursor*
return Meteor.users.find({_id: this.userId}, {fields: fields});
});
そして、クライアント上だけでサブスクリプションが流星にオーバーラップすることができます
Meteor.subscribe('extraUserData');
を呼び出します。このアプローチでうまくいくのは、クライアントに余分なフィールドを送るパブリッシュ関数が、ユーザーの電子メールアドレスやプロファイルなどの基本的なフィールドを送信するMeteorの背後にあるパブリッシュ関数と一緒に機能するということです。クライアントでは、Meteor.users
コレクション内のドキュメントは、2つのフィールドセットの和集合になります。あなたのクライアントに、
Meteor.publish("users", function() {
//this.userId is available to reference the logged in user
//inside publish functions
var _role = Meteor.users.findOne({_id: this.userId}).role;
switch(_role) {
case "counselor":
return Meteor.users.find({}, {fields: { sessionRemaining: 0, counselor: 0 }});
default: //student
return Meteor.users.find({}, {fields: { counselorSpecific: 0 }});
}
});
その後:Meteor.usersは、他の流星のコレクションなどのコレクションがあるので
私は今、いくつかの回答を得ていると私は、私は彼らので最高のを選択する方法を知っているかわかりませんすべてが表面上で動作するようです。私はもっと複雑な状況(つまり、役割が相互に排他的でない時など)のために働く最も単純な、最も「流星」のバージョンを望みたいと思う。 – Diogenes
その場合、彼はおそらく@ debergalisの答えをクリエイターの一人だから選ぶべきだろう流星のそれよりずっと多くの流星を得られない:) – Rahul