ユーザーが表示およびフィルタリングできるようにしたいかなり大きなドキュメント セットがあります。スピードアップするために、限られた量のドキュメントのみをクライアントに送信しています。ただし、クライアントがドキュメントをフィルタリングできるようにする必要があるため、クライアントがフィルタリングできるキーと値を送信する方法が必要です。クライアントが選択したフィルターに基づいて、ドキュメントのクエリを作成します。たとえば、次のような 2 つのドキュメントがあるとします。
{tags: ['foo'], user: 'Ken'} {tags: ['bar', 'baz'], user: 'Barbie'}
この場合、クライアントは、タグが foo、bar、および baz でフィルタリングされ、ユーザーが Ken と Barbie でフィルタリングできることを確認する必要があります。フィルターはドキュメント内のデータの単なる集約であるため、フィルターのコレクションを作成してデータベースに保存したくありません。代わりに、私は使用して遊んでいます
var Filters = new Meteor.Collection(null)
出版物の中。フィルターを作成するすべてのドキュメントに対してクエリを実行し、フィルターを Filters コレクションに挿入します。Filters コレクションで .observe を使用して、フィルターが追加されるとクライアントに送信します。
この結果、各クライアントがサーバー上に Filters コレクションを作成します。これらのコレクションのそれぞれに、{tag: 'foo', count: 3} のような約 50 ~ 400 のフィルターが含まれているとします。私には、サーバーの RAM を使い果たすことなく問題ないように思えますが、私はコンピューター科学者ではありません。これに関するご意見をいただければ幸いです。
サーバー上でフィルターを作成する方法について他のアイデアがある場合は、それも興味深いでしょう。
ありがとう!