У меня есть база данных MongoDB, к которой я обращаюсь через NodeJS, используя Mongoose. Я использую шифрование для хранения адресов электронной почты, используя модуль crypto
. При получении адреса электронной почты я расшифровываю значение базы данных. Вот соответствующая часть схемы Mongoose с использованием метода получения и установки шифрования:
...
email: {
type: Schema.Types.String,
required: true,
trim: true,
unique: true, // <-- this does not work due to encryption
set: value => this._encryption.encrypt(value),
get: value => this._encryption.decrypt(value)
},
....
Как видите, в поле используется атрибут unique
. Но из-за шифрования зашифрованное значение одного и того же адреса электронной почты всегда отличается. Теперь я могу хранить двух разных пользователей, использующих один и тот же адрес электронной почты, и никаких ошибок не выдается.
Как использовать шифрование вместе с атрибутом поля unique
?