Как оптимальнее обновить уникальные поля в MongoDb?
Привет всем. Задача. Пользователь может менять свои данные: имя, возраст, мейл, номер телефона. При этом мейл и телефон - уникальные поля. Если пользователь пытается заменить мейл или номер на уже существующий, то ему необходимо вывести адекватное сообщение об этом. Если мейл занят кем-то, сообщение будет - "мейл занят", если номер - "номер занят". Проблема. При попытке заменить мейл на уже существующий, запись в бд не обновляется и это хорошо, но бекенд вылетает, останавливается, а мне нужно вывести сообщение пользователю ну и чтобы бекенд дальше работал. Возможное решение.Самое первое, что приходит в голову. Последовательные шаги
1. Проверить, изменились ли мейл и телефон на фронтенде. Если нет, то можем спокойно обновлять данные в бд.
2. Если мейл и/или телефон изменились, то перед тем, как сохранить их, нужно проверить сперва существует ли уже пользователь с таким мейлом в базе. Если нет, то ок, но затем нужно делать еще один запрос, чтобы проверить существует ли такой пользователь с номером телефона.
Получается еще два доп. запроса. И их количество увеличивается с количеством изменяемых уникальных полей. Как-то не оптимально или нормально? Вопрос Есть более оптимальное решение?
сообщение об ошибке не очень пригодное для разбора "E11000 duplicate key error index: app.users.$email_1 dup key: { : "em@em.com" }". Ну я могу посмотреть код - 11000, который, как я понял, означает проблему уникального поля, но какое именно поле? На ум приходит только разбор строки по регулярному выражению о_О