Meteorでメッセージングアプリを作成したい(authブランチを使用)。メッセージコレクションがあり、各ドキュメントには一連の応答ドキュメント(「応答」)があります。サイドバーには、メッセージコレクションのさまざまなビューがあります。各ビューには、Meteor.publish('messages')...メソッドへの引数として提供される「クエリ」フィールドがあります。
ここまでは順調ですね。ビューをクリックすると、ページの主要部分にクエリに一致するメッセージのリストが表示されます。メッセージごとに、現在のユーザーが最後にメッセージを開いたときよりも新しい返信がある場合、または彼女がメッセージを開いたことがない場合は、太字で示します。これを行うには、各メッセージの「read_by」フィールドを維持します。このフィールドには、{user_id、...、read_at:...}レコードの配列が含まれています。これも美しく機能します。
問題は、サイドバーの各ビューに、現在選択されているビューだけでなく、各ビューの未読メッセージの数(前の段落のロジックによる)を示すバッジを表示する必要があることです。
どうすればこれを解決できますか?私の知る限り、これは、Messagesコレクションに対して多数のライブクエリを維持する必要があることを意味します。同時に、クライアントがメッセージコレクション全体をサブスクライブすることはできません。何百万ものドキュメントを保持していると仮定しましょう。サーバー上のDBコレクションにあるドキュメントの数に関係なく、クライアントはスナッピーなままである必要があります。
これには別のスキーマ設計が必要だと思いますが(これは問題ではありません)、私にはよくわかりません。