Ich erkannte diese Frage hat beenaskedbefore, aber keine der Lösungen schien für mich zu arbeiten.Unique Validierung funktioniert nicht in Mongoose
Ich habe ein einfaches Modell ich so bin definieren:
const mongoose = require('mongoose')
const { Schema } = mongoose
let subscriberSchema = new Schema({
firstName: { type: String, required: true },
email: { type: String, required: true, unique: true }
}, { timestamps: true })
let Subscriber = mongoose.model('Subscriber', subscriberSchema)
Wenn ich die folgenden (in der REPL, so dass keine Asynchron-Ausgaben) laufen, würde ich erwarten, dass ein Fehler zu sehen, für die protokollierten der zweite Anruf an create
.
Subscriber.create({ firstName: "Landon", email: "[email protected]" })
Subscriber.create({ firstName: "Landon", email: "[email protected]" }, function(err) {
console.log("ERROR", err)
})
Stattdessen sehe ich "ERROR" null
.
Wenn ich eine count
Abfrage oder eine find
Abfrage ausführen, kann ich sehen, beide Modelle erstellt wurden. Was mache ich falsch?
bearbeiten
Hier sind einige der Dinge, die ich schon versucht habe:
- Restart MongoDB nach Index Hinzufügen
- alle vorhandenen Datensätze entfernen, so dass keine vorhandenen Datensätze sind das könnte die Eindeutigkeitseinschränkung verletzen
- Definieren der
email
Attribut alle diese Möglichkeiten (ich habe verschiedene Implementierungen an verschiedenen Orten gesehen):{ type: String, required: true, unique: true }
,{ type: String, required: true, index: true, unique: true }
,{ type: String, required: true, index: { unique: true } }
.
Können Sie Ihre Frage so bearbeiten, dass sie das enthält, was Sie mit den verknüpften Fragen ausgecheckt haben, damit wir diese Fragen nicht stellen müssen? – JohnnyHK
@JohnnyHK Sicher, kein Problem. Aktualisiert. – LandonSchropp