クライアントビューまたはデータベースクエリで、いいね/アンいいねボタンを表示するためのロジックが保持される場所についてコンセンサスがあるかどうかを確認したかった. ロジックをクエリ自体にプッシュすると、クリーンで一貫性が保たれますが、投稿のホームページ リストのすべてのクエリをパーソナライズする必要があり、そのリクエストのキャッシュは許可されません。
セットアップ: MongoDb データベース (場合によっては neo4j)、node.js API とアプリケーション サーバー、iOS モバイル クライアントと Web サイト。ほとんどの投稿には 10 程度のいいねが付けられますが、数百のいいねが付けられる投稿もあります。ほとんどのユーザーは 50 ~ 300 件の投稿を気に入り、少数のユーザーは数千件の投稿を気に入っています。
私のユースケース: ユーザーが最近人気のある投稿のリストを閲覧すると、その投稿が既に気に入ったかどうかに基づいて、各投稿の横に「いいね」または「いいね!」ボタンが表示されます。
解決-
アプローチ 1: クエリでユーザー ID をデータベースに渡し、クエリで計算された isLiked プロパティを使用して最も人気のある投稿のリストを返します。
アプローチ 2: クライアント アプリはそのユーザーの高評価 ID をフェッチして同期を維持し、ビューは投稿の特定のリストに対して「いいね」ボタンまたは「いいね」ボタンを表示するかどうかを決定します。投稿のリストは、サーバーまたは cdn にキャッシュでき、パーソナライズは必要ありません。
アプローチ3?残りのAPIサービスレイヤーでそれを行うより効率的な方法はありますか?