Buduję aplikację MEAN.Jak złapać błąd podczas wstawiania dokumentu MongoDB, który narusza unikalny indeks?
To jest mój schemat nazwy użytkownika, nazwa użytkownika powinna być unikalna.
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
module.exports = mongoose.model('User', new Schema({
username: { type: String, unique: true }
}));
Na mój post trasie zapisać użytkownikowi tak:
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
});
});
})
Gdybym pisać o tej samej nazwie znowu mam ten błąd:
MongoError: insertDocument :: caused by :: 11000 E11000 duplicate key error index:
Może ktoś wyjaśnić jak zamiast błędu wysyłania json jak { succes: false, message: 'User already exist!' }
Uwaga: po opublikowaniu użytkownika zrobię aut omatyczne uwierzytelnienie, nie potrzebujesz hasła ani czegoś innego.
Dzięki, działa jak wyjątek, myślałem o tym, ale myślałem, że błąd może zwrócić coś innego niż błąd istniejącego użytkownika, jestem w błędzie? – Hiero
Tak, ale jest to typowy przypadek: "spróbuj zapisać użytkownika", a jeśli wystąpi błąd, uważasz, że użytkownik jest duplikatem. Możesz pokazać użytkownikowi prostą wiadomość typu "użytkownik już istnieje", a następnie zapisać na swoim logu prawdziwy błąd, aby sprawdzić, czy są błędy z bazą danych. –