Sto costruendo un'applicazione MEAN.Come rilevare l'errore quando si inserisce un documento MongoDB che viola un indice univoco?
Questo è il mio schema Nome utente, il nome utente deve essere univoco.
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
module.exports = mongoose.model('User', new Schema({
username: { type: String, unique: true }
}));
Il mio percorso post ho salvare l'utente in questo modo:
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
});
});
})
Se pubblico con lo stesso nome utente ancora ottengo questo errore:
MongoError: insertDocument :: caused by :: 11000 E11000 duplicate key error index:
Qualcuno può spiegare come invece dell'errore per inviare un json come { succes: false, message: 'User already exist!' }
Nota: dopo aver inserito l'utente, io omaticamente authentificate, non ho bisogno di password o qualcos'altro.
Grazie, funziona come escluso, stavo pensando a questo ma ho pensato che l'errore può restituire qualcosa di diverso dall'errore utente esistente, ho torto? – Hiero
Sì, ma questo è il caso comune: "prova a salvare un utente" e se c'è un errore pensi che l'utente sia duplicato. È possibile mostrare all'utente un messaggio semplice come "l'utente esiste già" e quindi memorizzare nei propri registri l'errore reale per vedere se ci sono errori nel database. –