【问题标题】:how to view breeze client validation errors如何查看微风客户端验证错误
【发布时间】:2014-02-09 19:17:04
【问题描述】:

我已经阅读了微风验证器信息,但不确定如何查看正在发生的实际错误。

错误:遇到客户端验证错误 - 有关详细信息,请参阅此对象的实体错误集合。

我相信它在 entity.entityAspect.getValidationErrors() 中的某个地方,但我无法弄清楚如何从中获取实际错误。

我正在尝试将记录插入实体并在出现此错误消息时保存更改。

【问题讨论】:

    标签: breeze hottowel


    【解决方案1】:

    见:

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

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

    简单示例:

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

    要获取 EntityManager 中的所有错误,您可以使用

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

    【讨论】:

    • 我以前研究过。 getValidationErrors 总是返回为无法调用未定义的方法“getValidationErrors”:manager = configureBreezeManager();manager.entityAspect.getValidationErrors()
    • 请查看 Breeze zip 中 DocCode 示例中的验证示例。但只是看看你的评论,EntityManager 没有“entityAspect”属性,实体本身都有一个“entityAspect”属性。因此,如果您想要 entityManager 中的所有错误,请使用 manager.getEntities().forEach(function(ent) { var errors = ent.entityAspect.getValidationErrors());
    【解决方案2】:

    您可以在尝试保存时“捕获”错误,如下所示:

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

    请记住,之后的任何代码都需要在

    setTimeout(function() {}, 0);
    

    因为捕获是异步的。 这是您无需遍历应用程序中的所有实体即可找到有错误的实体。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-08
      • 1970-01-01
      • 2016-07-18
      • 1970-01-01
      • 2020-03-23
      • 1970-01-01
      • 1970-01-01
      • 2014-06-29
      相关资源
      最近更新 更多