@ImPuuLsE

С чем связано одновременное создание одинаковых объектов в MySql и Yii2?

Здравствуйте! Не могу понять каким образом могут добавляться одинаковые записи в БД, при условии что имеется модель (в Yii2) в которой 2 поля (email, username) - уникальные.
Т.е. если отправить 1 запрос, то второй запрос с этими же данными - не записывается, валидация работает. Я сделал простую авторизацию через React Native, и Yii2 рест апи.
Если нажать быстро несколько раз на кнопку регистрации то в базу улетают n-e кол-во одинаковых записей (проверяется через android эмулятор). Запрос делается через fetch. Есть у кого какие мысли по этому поводу?
  • Вопрос задан
  • 220 просмотров
Пригласить эксперта
Ответы на вопрос 1
@devian3000
решение в лоб - сделайте уникальные индексы на столбцы на уровне БД.
Если это реализовано только на уровне кода то может происходить вот так.

Отправляются два запроса.
Первый запрос валидируется, проверяется что email уникален и отправляется на запись.
В этот момент проверяется второй запрос, если первый не успел записаться в базу, то получается что email снова уникален, и вторая запись уходит в базу и т.д.

Перекрывать надо на уровне БД.
Да и на фронте через REST блокировать отправку до того момента пока не вернётся ответ.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы