javascript - Web 表单:编辑用户“点”字段时的数据一致性
问题描述
我正在建立一个预订系统。我有一个表格,管理员可以给用户积分。用户在预订时段时使用这些积分。问题:当管理员打开用户编辑表单时,“积分”字段的初始值为 N,例如 1,这意味着该用户有一个积分。如果在管理员提交表单之前用户使用该点(通过预订),管理员正在查看的表单仍会显示 1 点,这是错误的,并且通过提交表单,该点将神奇地返回给用户。什么是解决方案?在“编辑”模式下锁定用户不做任何事情?
我正在使用 MERN 堆栈。
解决方案
通常的系统是在您加载页面时获取用户的当前点值。将该值与可编辑字段分开存储。然后,当处理表单的代码去更新字段时,它首先检查字段的当前值是否与第一次呈现表单时的值相同。如果是这样,则没有进行任何幕后更改,并且可以毫无问题地应用编辑。
但是,如果当前点值与原来不同,则说明发生了一些幕后更改,您通常会中止编辑,因为它基于过时的信息。然后管理员必须再次应用他们想要的更改 - 重复该过程。
以不引入自己的竞争条件的方式进行这些检查也很重要。具体如何实现是特定于数据库的。
推荐阅读
- sql - 在以下 CASE WHEN 语句中使用 SELECT AS 别名 - Spark SQL
- react-final-form - 如何防止将重复值添加到 react-final-form-array 中?
- r - 根据行和列元数据将 data.frame 中的一个值除以备用 data.frame 中的另一个值
- c# - C# Winform 使用 Interop 与 microsoft Outlook 365 应用程序客户端
- python - 如何在 Dash 应用程序的新行上打印
- autodesk-forge - 如何在伪造查看器中创建虚线标记?
- reactjs - React GitHub 拉取请求面临的问题
- javascript - React Native 如何让用户在关闭应用程序时保持登录状态
- indexing - 赛普拉斯获取包含我具有给定数据属性的元素的索引行
- mysql - MySQL极其简单的日期查询很慢