Я реализация webapp2 авторизации в мой код, и хотел понять эту странность:Почему модель webapp2 auth использует уникальную таблицу?
В models.py, я вижу, что в нем говорится:
Чтобы обеспечить свойство уникальности при создании нового
User
, мы первый создатьUnique
записи для этих свойств, и если все пойдет хорошо, мы можем сохранить новыйUser
рекорд ::
мне это кажется очень сложным способом тестирования на уникальность и, честно говоря, я не совсем понимаю, что делает функция «create_multi» .... что может быть, поэтому я немного запутался здесь. Мой мыслительный процесс:
Просто выполните быстрый запрос, чтобы узнать, существует ли имя пользователя (auth.id) в хранилище данных. Если нет, то положите().
Я знаю, что мне что-то не хватает, может кто-нибудь объяснить это мне? У меня есть подозрение, что, возможно, код был введен там, чтобы было легко, если бы люди захотели, иметь несколько уникальных возможностей?
спасибо!
p.s. По-видимому, код webapp2 был вдохновлен this piece of coding.
эй, поэтому в моем приложении (предоставленном, а не в случае использования всех приложений) ** email является именем пользователя и auth_id **. Итак, с этой точки зрения я собирался предложить просто сделать запрос для всех auth_ids, чтобы узнать, соответствует ли какой-либо новый, введенный пользователем. – iceanfire
Вот мое мнение о том, почему вы подчеркиваете транзакции: если мы не используем транзакции, если две регистрации пытаются зарегистрировать одно и то же имя пользователя в той же миллисекунде, это может позволить дублировать, если мой метод был использован? Дайте мне знать, если я на правильном пути. благодаря! – iceanfire
Да, вы не можете обеспечить уникальность, основанную исключительно на запросе без транзакции. Я обновил ответ, чтобы объяснить это. – moraes