これはReactとMeteorsの接続に制限があるのかどうか分かりませんが、ドキュメントでは余分なパラメータなしで可能であることが示唆されています。反応と流星サブスクリプション
私はmeteorサブスクリプションを呼び出すと、クエリで明示的にパラメータを指定しないと、パブリッシュ関数で指定されたデータを無視してデータを返します。
Meteor.publish("supplier", function() {
if(this.userId) {
var user = Meteor.users.findOne(this.userId, { fields : { active : 1 }});
if(user.active != this.userId || user.active != undefined){
// This only returns 1 singular supplier - is correct
var supplier = Supplier.find({ _id : user.active, users : this.userId });
return supplier;
} else {
return this.ready();
}
} else {
return this.ready();
}
});
は今、私は反応してサブスクリプションを呼び出すように
getMeteorData: function() {
var data = {}
handle = Meteor.subscribe("supplier");
if(handle.ready()) {
data.supplier = Supplier.findOne(); // Returns Wrong supplier
//data.supplier = Supplier.findOne({_id: session.get("active")}) // Returns correct supplier
data.supplierReady = true
}
return data;
},
これは、コレクション内の最初のサプライヤを返すサーバー上の公開機能に記録されていない1!しかし、私はexplicablyを渡す場合{ _id : user.active}
それは動作します!
publish
機能内のサーバー上でロジックを実行すると、私は単純にSupplier.findOne()
を使用できますが、これは当てはまりません。理由はわかりません。これはReact/Meteorの制限ですか、これは間違っていますか?
こんにちはジェレミー。有益な答えをありがとう。私は今、プリンシパルを理解しています。サプライヤコレクションの複数のサブスクリプションが存在する必要があります(サプライヤ間で切り替えることができます)。私はあなたが "クライアント側のコレクションの状態を確認する"ことによって何を意味するのかを説明したり説明することができれば興味があります。クライアントコレクションをチェックするためのカウントまたはクエリを意味しますか? – Allreadyhome
はい、私はあなたがサブスクリプションが実行される直前にクライアントコレクションを見ることができたことを意味しました。あなたはconsole.logにfind().fetch()やfind()。count()を使って簡単に調べることができます。あるいは、コレクションをより慎重に調べるために利用できるツールを使うこともできます。私が本当に好きで使いたいのは、https://github.com/bakery/meteor-devtoolsです.Mongolを使いたい人もいます。コードやコンソールにコマンドを入力する必要がないので、ちょっと簡単です。 –
デベロッパーツールに関する素晴らしいお勧め。ありがとう! – Allreadyhome