2014-01-20 12 views
6

Ich habe die Brise Validator Informationen gelesen, bin aber nicht sicher, wie der tatsächliche Fehler angezeigt wird, der auftritt.Wie Brise Client Validierungsfehler

Fehler: clientseitige Validierungsfehler festgestellt - weitere Informationen finden Sie in der Entity Errors-Auflistung für dieses Objekt.

Ich glaube, es ist irgendwo in entity.entityAspect.getValidationErrors(), aber ich habe Probleme herauszufinden, wie man den tatsächlichen Fehler daraus bekommt.

Ich versuche, einen Datensatz in eine Entität einzufügen und Änderungen zu speichern, wenn diese Fehlermeldung auftritt.

Antwort

9

See:

http://www.breezejs.com/sites/all/apidocs/classes/ValidationError.html

http://www.breezejs.com/sites/all/apidocs/classes/EntityAspect.html#method_getValidationErrors

Einfaches Beispiel:

var errors = entity.entityAspect.getValidationErrors(); 
errors.forEach(function(ve) { 
    var errorMessage = ve.errorMessage; 
    var property = ve.property; 
}); 

Um alle Fehler in einem EntityManager zu bekommen können Sie

verwenden
manager.getEntities().forEach(function(entity) { 
    var errors = entity.entityAspect.getValidationErrors(); 
    //.. do something with the errors .. 
}); 
+0

Ich habe das vorher untersucht. getValidationErrors kommt immer zurück als Kann die Methode 'getValidationErrors' von undefined nicht aufrufen: manager = configureBreezeManager(); manager.entityAspect.getValidationErrors() – user1813251

+1

Bitte sehen Sie sich die Validierungsbeispiele im DocCode-Beispiel in der Breeze-Zip an. Aber wenn Sie sich nur Ihren Kommentar ansehen, hat ein EntityManager keine Eigenschaft 'entityAspect', die Entitäten selbst haben jeweils die Eigenschaft 'entityAspect'. Wenn Sie also alle Fehler in einem EntityManager verwenden möchten, verwenden Sie manager.getEntities(). ForEach (function (ent)) {var errors = ent.entityAspect.getValidationErrors()); –

+0

Danke das war das bisschen Verständnis, das ich vermisste. – user1813251

0

Sie können ‚fangen‘ die Fehler, wenn Sie versuchen und speichern, etwa so:

manager.saveChanges() 
    .catch(function(error){ 
     console.log("error catch", error, error.entityErrors); 
    }); 

Denken Sie auch daran, dass jeder Code danach in einem

setTimeout(function() {}, 0); 

sein müssen als Der Haken ist asynchron. Damit mussten Sie nicht alle Entitäten in der App durchlaufen, um diejenigen mit Fehlern zu finden.