Здравствуйте. Недавно сделал небольшой проект на базе ASP.NET Web API 2. На клиентской части использую Angular. Проект представляет из себя небольшой блог.
Пост имеет поле ViewCount.
Как реализовать подсчет количества просмотров поста? И чтобы при перезапуске (F5), счетчик не увеличивался.
Возможно есть готовый кусок кода или советы по реализации?
Спасибо всем кто отзовется.
Посидев подумав немного я решил использовать следующую реализацию данного функционала.
Снизу приведен пример менеджера, который отвечает за установку/вывод количества просмотров поста (лота):
public class LotViewesManager: EntitiesManager
{
public async Task<int> GetLotViewersCountAsync(Guid lotId)
{
var lot = await GetByIdAsync<Lot>(lotId);
if (lot != null)
{
var lotViewes = await GetListAsync(
filters: new List<Expression<Func<LotViewes, bool>>>
{
x => x.LotId == lot.Id
});
return lotViewes.First().ViewersIds.Count;
}
throw new InvalidInputParameterException();
}
public async Task UpdateLotViewesAsync(Guid lotId, Guid viewerId)
{
var lot = await GetByIdAsync<Lot>(lotId);
if (lot != null)
{
var lotViewes = await GetListAsync(
filters: new List<Expression<Func<LotViewes, bool>>>
{
x => x.LotId == lot.Id
});
lotViewes.First().ViewersIds.Add(viewerId);
await Save(lotViewes.First());
return;
}
throw new InvalidInputParameterException();
}
public async Task SaveAsync(LotViewes lotViewes)
{
await Save(lotViewes);
}
}
Сама сущность, которая сохраняет все в БД:
public class LotViewes : Entity
{
public Guid LotId { get; set; }
public List<Guid> ViewersIds { get; set; }
public LotViewes()
{
ViewersIds = new List<Guid>();
}
}
Спасибо всем за советы =)
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости