walidator unikatowy-mangusty
Jak korzystać z tej wtyczki:
1) npm install --save mongoose-unique-validator
2) w swoim schemacie postępuj zgodnie z tym przewodnikiem:
var mongoose = require('mongoose');
var uniqueValidator = require('mongoose-unique-validator');
exampleSchema.plugin(uniqueValidator);
3) metody mangusty
Podczas korzystania z metod takich jak findOneAndUpdate
będziesz musiał przekazać ten obiekt konfiguracyjny:
{ runValidators: true, context: 'query' }
ie. User.findOneAndUpdate(
{ email: 'old-email@example.com' },
{ email: 'new-email@example.com' },
{ runValidators: true, context: 'query' },
function(err) {
}
4) opcje dodatkowe
bez rozróżniania wielkości liter
użyj opcji uniqueCaseInsensitive w swoim schemacie
ie. email: { type: String, index: true, unique: true, required: true, uniqueCaseInsensitive: true }
niestandardowe komunikaty o błędach
ie. exampleSchema.plugin(uniqueValidator, { message: 'Error, expected {PATH} to be unique.' });
Teraz możesz dodawać / usuwać unikalną właściwość do swoich schematów bez martwienia się o ponowne uruchamianie mongo, usuwanie baz danych lub tworzenie indeksów.
Ostrzeżenia (z dokumentacji):
Ponieważ polegamy na operacjach asynchronicznych w celu sprawdzenia, czy dokument istnieje w bazie danych, możliwe jest wykonanie dwóch zapytań w tym samym czasie, oba zwracają 0, a następnie oba wstawiają do MongoDB.
Poza automatycznym blokowaniem kolekcji lub wymuszaniem pojedynczego połączenia nie ma prawdziwego rozwiązania.
Dla większości naszych użytkowników nie będzie to problemem, ale należy być tego świadomym.