Веб-формы: согласованность данных при редактировании пользовательского поля «баллы» - PullRequest
1 голос
/ 09 мая 2020

Я создаю систему бронирования. У меня есть форма, в которой администратор может давать баллы пользователю. Пользователь использует эти баллы при бронировании слота. Проблема : когда администратор открывает форму редактирования пользователя, поле «points» будет иметь начальное значение N, например 1, что означает, что этот пользователь имеет одну точку. Если до того, как администратор отправит форму, пользователь использует эту точку (при бронировании), форма, которую просматривает администратор, по-прежнему будет показывать 1 балл, что неверно, и при отправке формы балл будет волшебным образом возвращен обратно пользователь. Что было бы решением? Запретить пользователю что-либо делать в режиме «редактирования»?

Я использую стек MERN.

1 Ответ

1 голос
/ 09 мая 2020

Обычная система для этого - получить текущее значение в баллах для пользователя в момент загрузки страницы. Сохраните это значение отдельно от редактируемого поля. Затем, когда код, обрабатывающий форму, переходит на обновление поля, он сначала проверяет, совпадает ли текущее значение поля с тем, каким оно было во время первого представления формы. Если это так, то никаких закулисных изменений сделано не было, и редактирование может быть применено без проблем.

Но, если текущее значение точки отличается от того, что было, то некоторые закулисные изменения имеют произошло, и вы обычно прерываете редактирование, потому что оно основано на устаревшей информации. Затем администратор должен снова применить желаемое изменение - повторить процесс.

Также важно выполнить эти проверки таким образом, чтобы не вводить собственное состояние гонки. Как именно реализовать это, зависит от базы данных c.

...