Сделать ещё один роут для события "Прочитал". Если пользователь открыл уведомление, то отправлять запрос на этот роут. Он в свою очередь будет данное уведомление помечать как прочитанное и больше отображаться не должно.
Точно также, делаете роут, который будет возвращать количество уведомлений.
Для уведомлений сделать отдельную таблицу. А в запросе к БД вместо полей можно просто количество запросить по нужным фильтрам. Пример для TypeORM:
await Queue.count({
where: {
userId: 123
}
});
И, как было сказано выше, просто с клиента отправлять раз в n секунд запрос на этот роут