Ограничение одного голоса в день в приложении MERN stack

#javascript #node.js #mongodb #voting-system

#javascript #node.js #mongodb #система голосования

Вопрос:

Я использую базу данных MongoDB и node.js в качестве серверной части. Я хочу внедрить систему голосования, в которой пользователь после входа на мой сайт может голосовать за определенные вещи. Но я хочу убедиться, что они могут делать только один голос в день. Как я могу это реализовать?

Возможное решение, о котором я подумал:-

Сохраните последнюю временную метку голосования, а затем проверьте, когда он попытается проголосовать снова, прошел день или нет. Но это не идеально, поскольку это означает, что между двумя голосами должен быть промежуток в 24 часа, независимо от времени суток, в которое он голосует.

Может ли кто-нибудь предложить что-то лучшее, чем я могу реализовать в node.js а MongoDB?

Заранее спасибо.

Комментарии:

1. «Сохраните последнюю временную метку голосования, а затем проверьте, когда он попытается проголосовать снова, прошел день или нет». Если вы сохраняете временную метку, вы, конечно, можете сравнить, есть ли разница более чем в 24 часа с текущим временем.

2. Да, но предположим, что он открывается для голосования в 10 утра каждый день, но если однажды он задержится на 10 минут, то весь следующий день ему придется делать задержку на 10 минут.

Ответ №1:

Я бы использовал Redis с ttl для этого, и в промежуточном программном обеспечении я бы проверил, проголосовал ли пользователь уже (существует в Redis). Но если вы не используете Redis, вы также можете использовать TTL в MongoDB, поэтому я создаю для этого схему и проверяю каждый запрос в промежуточном программном обеспечении.

Комментарии:

1. Я бы не стал добавлять для этого еще одну инфраструктуру. Кроме того, почему промежуточное программное обеспечение? Было бы достаточно проверить непосредственно перед сохранением нового голосования…

2. Я не знаю, как он реализует систему голосования, если он использует несколько маршрутов /? как вы можете быть так уверены?

3. Это простое приложение, в нем всего несколько API. Я не использую Redis, и я мало что знаю о TTL. Можете ли вы проинформировать меня об этом? Извините, я новичок.