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łów

Zdefiniował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 mongoose

Jednak 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 flaga

Mongoose 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' } }
Pytanie

To 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ć?

questionAnswers(7)

yourAnswerToTheQuestion