Mungo-Unique-Validator
So verwenden Sie dieses Plugin:
1) npm install - Mungo-Unique-Validator speichern
2) Befolgen Sie in Ihrem Schema diese Anleitung:
// declare this at the top
var mongoose = require('mongoose');
var uniqueValidator = require('mongoose-unique-validator');
// exampleSchema = mongoose.Schema({}) etc...
exampleSchema.plugin(uniqueValidator);
// module.exports = mongoose.model(...) etc....
3) Mungo-Methoden
Wenn Sie Methoden wie diese verwenden, müssen findOneAndUpdate
Sie dieses Konfigurationsobjekt übergeben:
{ runValidators: true, context: 'query' }
ie. User.findOneAndUpdate(
{ email: 'old-email@example.com' },
{ email: 'new-email@example.com' },
{ runValidators: true, context: 'query' },
function(err) {
// ...
}
4) zusätzliche Optionen
Groß- und Kleinschreibung nicht berücksichtigen
Verwenden Sie die Option uniqueCaseInsensitive in Ihrem Schema
ie. email: { type: String, index: true, unique: true, required: true, uniqueCaseInsensitive: true }
benutzerdefinierte Fehlermeldungen
ie. exampleSchema.plugin(uniqueValidator, { message: 'Error, expected {PATH} to be unique.' });
Jetzt können Sie die eindeutige Eigenschaft zu Ihren Schemas hinzufügen / löschen, ohne sich Gedanken über einen Neustart von Mongo, das Löschen von Datenbanken oder das Erstellen von Indizes machen zu müssen.
Vorsichtsmaßnahmen (aus den Dokumenten):
Da wir uns auf asynchrone Operationen verlassen, um zu überprüfen, ob ein Dokument in der Datenbank vorhanden ist, können zwei Abfragen gleichzeitig ausgeführt werden. Beide erhalten 0 zurück und werden dann beide in MongoDB eingefügt.
Außer dem automatischen Sperren der Sammlung oder dem Erzwingen einer einzelnen Verbindung gibt es keine echte Lösung.
Für die meisten unserer Benutzer ist dies kein Problem, aber ein Randfall, den Sie beachten sollten.