Хотел узнать, существует ли консенсус относительно того, где должна храниться логика отображения кнопок «нравится/не нравится» — в представлении клиента или в запросе к базе данных. Перенос логики в сам запрос сохраняет его чистоту и согласованность, но потребует персонализации каждого запроса для списка сообщений на домашней странице и запрета кэширования этого запроса.
Установка: база данных MongoDb (или, возможно, neo4j), API-интерфейс node.js и сервер приложений, мобильный клиент iOS и веб-сайт. У большинства постов может быть около дюжины лайков, но у некоторых могут быть сотни лайков. Большинству пользователей понравились 50–300 сообщений, а некоторым пользователям понравились тысячи сообщений.
Мой вариант использования: пользователь просматривает список последних популярных сообщений и видит кнопку «Нравится» или «Не нравится» рядом с каждым сообщением в зависимости от того, понравилось ли ему сообщение.
Решение-
Подход 1: передать в запросе userid в базу данных и вернуть список самых популярных постов со свойством isLiked, вычисляемым в запросе.
Подход 2. Клиентское приложение извлекает и синхронизирует понравившиеся идентификаторы для этого пользователя, а представление определяет, показывать ли кнопку «Нравится» или «Не нравится» для любого заданного списка сообщений. Списки постов могут кэшироваться на сервере или в cdn и не требуют никакой персонализации.
Подход 3? Есть ли более эффективный способ сделать это на остальном уровне службы API?