Поддерживает ли mongoose декларативный способ дезинфекции (например, нижний регистр) при выполнении наборов/находок?

Рассмотрим поле email, которое я хотел бы установить и запросить (findOne). Я создал уникальный индекс. Более того, я хотел бы, чтобы все адреса электронной почты были строчными в соответствии с передовой практикой.

Конечно, я могу убедиться, что все мои контроллеры, которые устанавливают и/или запрашивают email, сначала будут использовать строчные буквы, но это подвержено ошибкам. Есть ли способ декларативно разгрузить это на мангуста/монго? То есть: передача [email protected] в Mongoose будет правильно очищена до [email protected] перед установкой значения или запросом коллекции.


person Geert-Jan    schedule 07.01.2014    source источник


Ответы (1)


Вы можете использовать промежуточное ПО для предварительного сохранения. Это кодирование, но оно гарантирует, что при любом вызове для сохранения вашего документа электронная почта будет строчной, независимо от того, откуда она была сохранена.

userSchema.pre('save', function(next) {
    var user = this;
    user.email = user.email.toLowerCase();
    next();
});
person Daniel Flippance    schedule 07.01.2014
comment
Ага. Только что обнаружил возможность делать lowercase: true и trim: true прямо в схеме, что больше похоже на то, что я хочу. Однако как ваше предложение, так и мое не относятся к части запроса. - person Geert-Jan; 08.01.2014