如何防止使用异步请求进行多次验证?
How to prevent multiple validations with async requests?
我有一个用户的项目需要其他用户验证 10 次(可变值)。当物品被验证 10 次时,物品的所有者将获得一定数量的积分。
但我的问题是,如果有 400 个用户同时验证该项目,我将无法只验证一次。
例如:
- 一个请求通过
nbValidation >= 10 && validated === false
-> 补丁{ validated: true }
并给用户10分
- 第二个请求同时通过
nbValidation >= 10 && validated === false
-> 补丁{ validated: true }
再次给用户10分
所以用户有 20 分而不是 10 分。
我正在使用 feathersJs
你有什么办法避免这个问题吗?
谢谢
在您的验证服务中,传入的请求应该排队并一次选择一个用户来执行您的逻辑。成功验证变量后,将点数提供给用户,并像缓存一样维护已验证当前变量的记录并添加此用户。现在,您可以从队列中删除用户并选择下一个。
通过这种方式,您可以让用户保持与他们进来时相同的格式,并且本地缓存可以帮助您识别谁已经验证了相同的变量。
我有一个用户的项目需要其他用户验证 10 次(可变值)。当物品被验证 10 次时,物品的所有者将获得一定数量的积分。
但我的问题是,如果有 400 个用户同时验证该项目,我将无法只验证一次。
例如:
- 一个请求通过
nbValidation >= 10 && validated === false
-> 补丁{ validated: true }
并给用户10分 - 第二个请求同时通过
nbValidation >= 10 && validated === false
-> 补丁{ validated: true }
再次给用户10分
所以用户有 20 分而不是 10 分。
我正在使用 feathersJs
你有什么办法避免这个问题吗?
谢谢
在您的验证服务中,传入的请求应该排队并一次选择一个用户来执行您的逻辑。成功验证变量后,将点数提供给用户,并像缓存一样维护已验证当前变量的记录并添加此用户。现在,您可以从队列中删除用户并选择下一个。
通过这种方式,您可以让用户保持与他们进来时相同的格式,并且本地缓存可以帮助您识别谁已经验证了相同的变量。