validatore-unico-mangusta
Come utilizzare questo plugin:
1) installazione di npm --save mongoose-unique-validator
2) nel tuo schema segui questa guida:
var mongoose = require('mongoose');
var uniqueValidator = require('mongoose-unique-validator');
exampleSchema.plugin(uniqueValidator);
3) metodi di mangusta
Quando usi metodi come findOneAndUpdate
te, dovrai passare questo oggetto di configurazione:
{ runValidators: true, context: 'query' }
ie. User.findOneAndUpdate(
{ email: 'old-email@example.com' },
{ email: 'new-email@example.com' },
{ runValidators: true, context: 'query' },
function(err) {
}
4) opzioni aggiuntive
case insensitive
usa l'opzione uniqueCaseInsensitive nel tuo schema
ie. email: { type: String, index: true, unique: true, required: true, uniqueCaseInsensitive: true }
messaggi di errore personalizzati
ie. exampleSchema.plugin(uniqueValidator, { message: 'Error, expected {PATH} to be unique.' });
Ora puoi aggiungere / eliminare la proprietà univoca ai tuoi schemi senza preoccuparti di riavviare mongo, eliminare database o creare indici.
Avvertenze (dai documenti):
Poiché ci affidiamo a operazioni asincrone per verificare se un documento esiste nel database, è possibile che due query vengano eseguite contemporaneamente, entrambe recuperino 0 e quindi vengano inserite entrambe in MongoDB.
Al di fuori del blocco automatico della raccolta o della forzatura di una singola connessione, non esiste una soluzione reale.
Per la maggior parte dei nostri utenti questo non sarà un problema, ma è un caso limite di cui essere a conoscenza.