Что уникальное делает в мангусте - PullRequest
0 голосов
/ 14 октября 2019

Я учусь создавать API с помощью узлов и мангустов. При создании моей схемы я установил одно из значений unique : true. Но опять же, на уроке, который я смотрю, парень снова проверяет, существует ли электронное письмо в базе данных. Разве это не двойная работа? Если значение электронной почты установлено как уникальное, зачем проверять с помощью метода findOne, существует ли оно? Разве это unique:true не позаботится об этом?

1 Ответ

1 голос
/ 15 октября 2019

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

Даже случай обработки ошибок можно легко выполнить, например, this . Тем не менее, в зависимости от вашего кода может случиться так, что есть некоторая настройка, которая потребует специальной обработки ошибок в этом случае (например, если обработка ошибок не завершена с фактическими ошибками или поток программы не должен останавливать процесс)

Другим крайним случаем могут быть запросы, которые обходят проверку mongoose напрямую с помощью драйвера mongodb, но, как упоминалось ранее, это не должно иметь значения, поскольку mongodb (не mongoose) все равно выдаст ошибку «дублирующий ключ».

Наконец, использование findOne для проверки существования объекта - не самый эффективный выбор, так как count или find (). Limit (1) может быть более производительным выбором в этом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...