2016-11-23 2 views
1

Ich habe dieses sehr einfaches Modell mit nur einem Feld name, dass ich gegen einen Regex validtate will:SimpleSchema nicht in der Lage für spezifische Fehlermeldung einzustellen gegeben Validierung

const Projects = new ProjectsCollection('projects'); 

Projects.schema = new SimpleSchema({ 
    _id   : {type: String, regEx: SimpleSchema.RegEx.Id}, 
    name  : { 
     type : String, 
     regEx: /^[a-zA-Z0-9]+((\s[a-zA-Z0-9]+)|(_[a-zA-Z0-9]+)|(-[a-zA-Z0-9]+)|(\.[a-zA-Z0-9]+))?$/ 
    } 
}); 

Projects.attachSchema(Projects.schema); 

Wenn die Validierung fehlschlägt bekomme ich wieder einen Validierungsfehler sagen, dass regex failed for Name für mich unerwünscht ist, weil es mehrdeutig ist und der Benutzer keine Ahnung hat, was genau ich brauche ihn zu betreten.

Ich habe versucht, die folgenden ohne Erfolg und fügte hinzu:

Projects.schema.messages({ 
    "regEx name": [{ 
     msg: "test error message" 
    }] 
}); 

diesem einen however..works aber das Problem ist, dass ich mit einem Namensfeld ein anderes Modell haben könnte, und es wird die gleiche Fehlermeldung ausspucken für alle von ihnen (und ich plane, ein anderes Modell mit einem name Feld mit):

SimpleSchema.messages({ 
    "regEx name": [{ 
     msg: "test error message" 
    }] 
}); 

I mit (ohne Erfolg) versuchte auch:

SimpleSchema.messages({ 
    "regEx projects.name": [{ 
     msg: "test error message" 
    }] 
}); 

ich über Methoden einsetzen und hier ist mein Insert Code:

export const insert = new ValidatedMethod({ 
    name     : 'projects.insert', 
    mixins    : [simpleSchemaMixin], 
    schema    : Projects.simpleSchema().pick([ 
     'name' 
    ]), 
    schemaValidatorOptions: { 
     clean : true, 
     filter: false 
    }, 
    run({name}) { 
     return Projects.insert({ 
      name 
     }, null); 
    }, 
}); 

Irgendwelche Ideen auf, wie soll ich meine Prüfungsmeldungen konfigurieren, damit ich sie für bestimmte Felder ausrichten können?

Antwort

1

Siehe the documentation für den Sonderfall regex Nachrichten:

In Ihrem Fall sollten Sie versuchen:

Projects.schema.messages({ 
    "regEx name": [ 
    { 
     exp: /^[a-zA-Z0-9]+((\s[a-zA-Z0-9]+)|(_[a-zA-Z0-9]+)|(-[a-zA-Z0-9]+)|(\.[a-zA-Z0-9]+))?$/ , 
     msg: "test error message" 
    } 
    ] 
}); 
+0

Samen allgemeine Fehler leider: 'Name regulären Ausdruck fehlgeschlagen validation' –

+0

Haben Sie die Meldungen haben * bevor * Sie das Schema anhängen? –

+0

Ich habe gerade versucht, mit beiden sicherzustellen. Ich vermute, dass 'ValidatedMethod' ein neues Schema erstellt, das meine Nachrichten nicht nutzt. –

Verwandte Themen