Umgang mit Mungovalidierungsfehlern - wo und wie?

Ich versuche zu entscheiden, wie ich mit Validierungsfehlern in Mongoose umgehen möchte.

Benutzerdefinierte Fehlermeldungen mit dem Node-Validator

Ich habe meine eigenen Validierungsregeln mit definiertKnoten-Validator, zum Beispiel:

UserSchema.path('username')
  .validate(function (username) {
    return validator.check(username).notEmpty()
  }, 'Username cannot be blank')

Was einen Fehler erzeugt, der so aussieht:

  username: 
   { message: 'Validator "Username cannot be blank" failed for path username',
     name: 'ValidatorError',
     path: 'username',
     type: 'Username cannot be blank' },
Verwendung von Mungo-Validator

Der Node-Validator stellt jedoch eigene Fehlermeldungen zur Verfügung. Wenn ich das benutzeMungo-Validator Node-Modul, um Node-Validator direkt in mein Schema zu stecken. Dann kann ich diese Fehlermeldungen direkt verwenden:

var UserSchema = new Schema({
  name: { type: String, validate: [validate('notEmpty')] }
});

Wodurch eine Fehlermeldung generiert wird, die wie folgt aussieht:

  name: 
   { message: 'Validator "String is empty" failed for path name',
     name: 'ValidatorError',
     path: 'name',
     type: 'String is empty' } }

Ich kann auch hier eine benutzerdefinierte Fehlermeldung bereitstellen:

var UserSchema = new Schema({
  name: { type: String, validate: [validate({message: 'Name cannot be blank' }, 'notEmpty')] }
});
Mungorequired Flagge

Mit Mongoose können Sie ein Feld nach Bedarf definieren:

var UserSchema = new Schema({
  name: { type: String, required: true }
});

Wodurch eine Fehlermeldung generiert wird, die wie folgt aussieht:

  name: 
   { message: 'Validator "required" failed for path name',
     name: 'ValidatorError',
     path: 'name',
     type: 'required' } }
Die Frage

Es fühlt sich an, als ob diese Prüferwollen Sie verwenden ihre eingebauten Fehlermeldungen. Zum Beispiel möchte ich ein Feld als deklarierenrequired Wie oben dargestellt, aber ich kann die Fehlermeldung nicht anpassen. Und das Mungo-Validator-Modul hat bis vor kurzem keine benutzerdefinierten Nachrichten unterstützt, weshalb ich denke, dass sie ein Anti-Pattern auf Modellebene sind.

Wie können diese Validatoren am besten implementiert werden? Soll ich sie ihre eigenen Fehler erzeugen lassen und sie dann irgendwie interpretieren?

Antworten auf die Frage(7)

Ihre Antwort auf die Frage