首页 > 解决方案 > Web 表单:编辑用户“点”字段时的数据一致性

问题描述

我正在建立一个预订系统。我有一个表格,管理员可以给用户积分。用户在预订时段时使用这些积分。问题:当管理员打开用户编辑表单时,“积分”字段的初始值为 N,例如 1,这意味着该用户有一个积分。如果在管理员提交表单之前用户使用该点(通过预订),管理员正在查看的表单仍会显示 1 点,这是错误的,并且通过提交表单,该点将神奇地返回给用户。什么是解决方案?在“编辑”模式下锁定用户不做任何事情?

我正在使用 MERN 堆栈。

标签: javascriptnode.jsreactjsmongodbexpress

解决方案


通常的系统是在您加载页面时获取用户的当前点值。将该值与可编辑字段分开存储。然后,当处理表单的代码去更新字段时,它首先检查字段的当前值是否与第一次呈现表单时的值相同。如果是这样,则没有进行任何幕后更改,并且可以毫无问题地应用编辑。

但是,如果当前点值与原来不同,则说明发生了一些幕后更改,您通常会中止编辑,因为它基于过时的信息。然后管理员必须再次应用他们想要的更改 - 重复该过程。

以不引入自己的竞争条件的方式进行这些检查也很重要。具体如何实现是特定于数据库的。


推荐阅读