我正在创建一个简单的投票应用程序,客户端可以在其中从 HTML 选择下拉列表中进行选择并选择一个选项,然后通过触发 POST 请求以将选择保存在数据库中的表单提交。然后在前端更新。
目前没有实施身份验证,但如果需要,我可能会进行此操作。
我主要担心的是有人投票次数太荒谬,以及只能投票一次的公平性。
现在我刚刚在客户端投票时添加了本地存储,所以当应用程序重新呈现时,选择被禁用,显然这不是一个可靠的解决方案,因为他们可以清除这个/使用另一个设备。
我以前从未构建过投票应用程序,所以我在这种情况下没有经验,我很好奇这种情况的最佳解决方案是什么。这不是一个严肃的应用程序,但如果可能的话,我想以比使用本地存储更好的方式解决这个问题。
POST 请求
router.post('/allTime', async (req, res) => {
try {
const guest = await req.body.guest;
if(guest) {
const guestFormatted = guest.toLowerCase();
const guestPoll = await new GuestPoll({
guest: guestFormatted,
points: 1
}).save();
pusher.trigger("poll", "poll-vote", {
guest: guestPoll.guest,
points: parseInt(guestPoll.points)
});
}
return res.json({
message: 'Vote submitted'
})
} catch(err) {
return res.json({
err
});
}
});