同じコレクションの複数のサブセットを作成し、この例に従って異なるレコード セットでそれらを公開するアプリを作成しています。
この原則を使用して、アドホック レコード セットを作成しています。パブリッシュ コードは、テンプレートごとに呼び出されるメソッド内にあります。
//Template
Template.item._item = function() {
Meteor.call('publishMethod', foo);
Meteor.subscribe('name-'+foo);
return someFunction(foo);
}
//Method
Meteor.methods({
'publishMethod' = function(foo) {
Meteor.publish('name-'+foo, function() { someFunction(foo); });
});
});
//Common area
someFunction = function(foo) {
return Collection.find({'foobar' : foo});
}
この例では、 someFunction() はクライアントとサーバーの間の共通領域にあります。someFunction() は、foo に基づくコレクションのサブセットを返します。
上記のアプローチに関していくつか質問があります。
- メソッドが同じ foo 値で呼び出されると、Meteor は「'name-foo' という名前の重複したパブリッシュを無視しています」と出力します。レコード セットが存在するかどうかを確認する方法はありますか?
- これらのレコード セットが引き続き公開され、メモリが解放されないことが懸念されます。これらのレコード セットはクライアント側のみですか? それともサーバーに蓄積されますか?
これは、同じ大規模なデータセットで複数の複雑なクエリを処理するために私が見つけた最良のアプローチであり、リクエストとページごとに特定のフィールドを送信できます。しかし、私は提案を受け入れています。
前もって感謝します。