J'ai reconnu cette question a beenaskedbefore, mais aucune des solutions ne semblait fonctionner pour moi.Validation unique ne fonctionnant pas dans Mongoose
J'ai un modèle simple je définis comme ceci:
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)
Si j'exécutez la commande suivante (dans le REPL, donc pas de problèmes async), je vous attendez à voir une erreur en cours d'enregistrement pour le deuxième appel à create
.
Subscriber.create({ firstName: "Landon", email: "[email protected]" })
Subscriber.create({ firstName: "Landon", email: "[email protected]" }, function(err) {
console.log("ERROR", err)
})
Au lieu de cela, je vois "ERROR" null
.
Si j'exécute une requête count
ou une requête find
, je peux voir que les deux modèles ont été créés. Qu'est-ce que je fais mal?
Modifier
Voici quelques-unes des choses que je l'ai déjà essayé:
- Redémarrez MongoDB après avoir ajouté l'index
- Suppression de tous les enregistrements existants de sorte qu'il n'y a pas de dossiers existants qui pourrait violer la contrainte d'unicité
- Définition de l'attribut
email
toutes ces façons (je l'ai vu différentes implémentations dans des endroits différents):{ type: String, required: true, unique: true }
,{ type: String, required: true, index: true, unique: true }
,{ type: String, required: true, index: { unique: true } }
.
Pouvez-vous modifier votre question d'inclure ce que vous avez vérifié les questions liées afin que nous ne devons pas poser ces mêmes questions? – JohnnyHK
@JohnnyHK Bien sûr, pas de problème. Actualisé. – LandonSchropp