私はproductionalizeしようとしているmeteor.jsアプリを持っています。私は各ユーザーが獲得した "ポイント"のレコードを格納するコレクションUserEarningsを持っています。今、私は、サーバー上のすべてのレコードを公開しています:サーバ上でフィルタリングするとMeteor.jsのパブリケーションが結果を返さないのはなぜですか?
Meteor.publish('userEarnings',() => UserEarnings.find());
とクライアント上の特定のユーザーのみに関連するものまで、レコードをフィルタリング:
const composer = (props, onData) => {
const subscription = Meteor.subscribe('userEarnings');
if (subscription.ready()) {
const userEarnings = UserEarnings.find({owner: Meteor.user()._id}).fetch();
onData(null, { userEarnings });
}
};
export default composeWithTracker(composer, Loading)(AuthenticatedNavigation);
これは完璧にうまく機能していますしかし、理想的に私は、サーバー上でフィルタリングすることになります。
Meteor.publish('userEarnings',() => UserEarnings.find({ owner: this.userId }));
残念ながら、これを実行しても結果は私がUserEarnings.find()を呼び出したときに、クライアント上で()をフェッチ返されません生み出します。なぜ誰がこのことが分かっているのですか?私はサインインしたユーザーがいるときだけ、クライアントから「userEarnings」を購読することに注意してください。
他にも関連性のある情報があるかどうかはわかりませんが、それがあると思われる場合は教えてください。
Meteor.publish('userEarnings',() => UserEarnings.find({ owner: this.userId }));
へ::矢印機能を使って、あなたが設定しているので、最初のアプローチが機能しない理由
Meteor.publish('userEarnings', function userEarnings() {
return UserEarnings.find({ owner: this.userId });
});
理由である私は
ありがとうございました!私はそれを理解しようとしている私の髪を引っ張っていた。 – Swiss