Проверка Mongoose против MongoDB - PullRequest
0 голосов
/ 03 октября 2018

У меня есть проект, над которым я работаю и следовал руководству по созданию пользователей.Цель состояла в том, чтобы создать пользователя с уникальным именем пользователя и уникальным адресом электронной почты и паролем bcrypt.Ни один другой пользователь не сможет зарегистрироваться, используя имя пользователя или адрес электронной почты, если он используется.

Процесс включал создание пользователя с использованием приведенной ниже схемы через запрос Post с использованием почтальона.Индикатор «уникальный» был добавлен после того, как пользователь уже был создан.После того как я обновил схему, добавив в нее «уникальную» опцию, я обнаружил, что пользователи все еще могут быть созданы с одним и тем же адресом электронной почты.При поиске здесь я обнаружил, что это было связано с тем, что исходные документы были созданы с этим электронным письмом, и это было решено путем удаления этой коллекции и запуска нового, что не является большой проблемой.

var UserSchema = new Schema({
username: { type: String, lowercase: true, required: true, unique: 
true},
password: { type: String, required: true },
email: { type: String, required: true, lowercase: true, unique: true}
});

Однако при исследовании MongooseВеб-сайт Я нашел некоторую информацию о проверке, которая немного смутила меня.Я просматривал проверки документов и затем FAQ на сайте Mongoose, которые, как я могу сказать, заявляют, что вместо этого в производственной среде следует использовать оболочку MongoDB для создания индексов для моих данных, если я хочу, чтобы они были подтверждены как уникальные при создании, вместо использования опции "уникальный".

Это правильно?Или зачем мне использовать «уникальный» в Mongoose, когда Mongoose говорит мне, что в конце концов мне действительно нужно будет использовать оболочку MongoDB?С проверкой схемы , доступной в MongoDB , является ли Mongoose по-прежнему предпочтительным вариантом для использования при разработке приложений MEAN, сегодня?Я действительно часто использую Mongoose, но у меня нет огромных мнений или нет необходимости создавать что-то настолько реляционное, насколько это возможно. Стоит ли изучать Mongoose, используя только сам MongoDB?Если я так неправ, это больно, это хорошо, и я могу принять это, но любая проницательность будет оценена.

1 Ответ

0 голосов
/ 03 октября 2018

Вы можете использовать MongoDB Native Driver for Node.js вместо мангуста.Я нахожу Схему немного проще и более реляционной, используя Mongoose.В этом случае нет ничего неправильного или правильного, однако у Mongoose есть небольшой спад производительности, как показано здесь: Производительность

Также вы можете использовать Mongoose с пакетом mongoose-unique-validator для решенияс проверкой unique. Ссылка на пакет

const mongoose = require('mongoose');
const uniqueValidator = require('mongoose-unique-validator');

var UserSchema = mongoose.Schema({
  username: { type: String, lowercase: true, required: true, unique: true},
  password: { type: String, required: true },
  email: { type: String, required: true, lowercase: true, unique: true}
});

userSchema.plugin(uniqueValidator);
...