Obsługa błędów sprawdzania poprawności Mongoose - gdzie i jak?
Próbuję zdecydować, jak chcę obsługiwać błędy sprawdzania poprawności w Mongoose.
Niestandardowe komunikaty o błędach za pomocą walidatora węzłówZdefiniowałem własne reguły sprawdzania poprawności przy użyciuwalidator węzłów, na przykład:
UserSchema.path('username')
.validate(function (username) {
return validator.check(username).notEmpty()
}, 'Username cannot be blank')
Który wygeneruje błąd, który wygląda tak:
username:
{ message: 'Validator "Username cannot be blank" failed for path username',
name: 'ValidatorError',
path: 'username',
type: 'Username cannot be blank' },
Używanie walidatora mongooseJednak walidator węzłów udostępnia własne komunikaty o błędach. Jeśli korzystam zmongoose-walidator Moduł węzła, aby podłączyć walidator węzła bezpośrednio do mojego schematu, a następnie mogę użyć tych komunikatów o błędach bezpośrednio zamiast tego:
var UserSchema = new Schema({
name: { type: String, validate: [validate('notEmpty')] }
});
Który wygeneruje komunikat o błędzie, który wygląda tak:
name:
{ message: 'Validator "String is empty" failed for path name',
name: 'ValidatorError',
path: 'name',
type: 'String is empty' } }
Również tutaj mogę podać niestandardowy komunikat o błędzie:
var UserSchema = new Schema({
name: { type: String, validate: [validate({message: 'Name cannot be blank' }, 'notEmpty')] }
});
Mangustarequired
flagaMongoose pozwala zdefiniować pole zgodnie z wymaganiami:
var UserSchema = new Schema({
name: { type: String, required: true }
});
Który wygeneruje komunikat o błędzie, który wygląda tak:
name:
{ message: 'Validator "required" failed for path name',
name: 'ValidatorError',
path: 'name',
type: 'required' } }
PytanieTo tak, jakby ci walidatorzychcieć użyć wbudowanych komunikatów o błędach. Na przykład chcę zadeklarować pole jakorequired
jak widać powyżej, ale nie mogę znaleźć sposobu na dostosowanie komunikatu o błędzie. Moduł mongoose-validator nie obsługiwał niestandardowych wiadomości aż do niedawna, co sprawia, że sądzę, że są one anty-wzorem na poziomie modelu.
Jaki jest najlepszy sposób wdrożenia tych walidatorów? Czy powinienem pozwolić im generować własne błędy, a następnie jakoś je interpretować?