Comment faire pour intercepter l'erreur lors de l'insertion d'un MongoDB document qui viole un index unique?
Je suis en train de construire une MOYENNE app.
C'est mon nom d'utilisateur de schéma, le nom d'utilisateur doit être unique.
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
module.exports = mongoose.model('User', new Schema({
username: { type: String, unique: true }
}));
Sur mon post itinéraire-je économiser de l'utilisateur comme ceci:
app.post('/authenticate', function(req, res) {
var user = new User({
username: req.body.username
});
user.save(function(err) {
if (err) throw err;
res.json({
success: true
});
});
})
Si je poste avec le même nom d'utilisateur de nouveau, j'obtiens cette erreur:
MongoError: insertDocument :: causée par :: 11000 E11000 double de la clé
indice d'erreur:
Quelqu'un peut m'expliquer comment au lieu de l'erreur d'envoyer un json comme { succes: false, message: 'User already exist!' }
Remarque: Après que je poste de l'utilisateur que je vais automatiquement authentificate, n'ont pas besoin de mot de passe ou quelque chose d'autre.
Vous devez vous connecter pour publier un commentaire.
Vous aurez besoin de test de l'erreur retournée par la méthode save pour voir si elle a été lancée pour un double nom d'utilisateur.
Vous pouvez également essayer ce joli paquet mongoose-unique-programme de validation qui rend la gestion des erreurs beaucoup plus facile, puisque vous obtiendrez une Mangouste validation d'erreur lorsque vous essayez de violer une contrainte unique, plutôt que d'une E11000 erreur de MongoDB:
Essayez ceci: