2013-01-10 8 views
0

我正在使用Breeze将数据加载到我的应用程序中。我在应用程序加载时执行数据的初始加载并且工作正常。我也有一个按钮,点击时应该再次获取数据。但是,当我单击该按钮时,查询失败,但错误消息是json数据。仅当通过按钮单击加载数据时微风错误

下面是该函数的代码:

var getULSLogs = function (filters) { 

    var query = entityQuery 
     .from('ULSLogs') 
     .orderByDesc('LogTime') 
     .take(app.rowLimit); 

    return manager.executeQuery(query) 
     .then(querySucceeded) 
     .fail(function(e) { 
      alert(e); 
     }); 

    function querySucceeded(data) { 
     console.log('Query Succeeded'); 
     data.results.forEach(function (item) { 
      vm.ulslog.logs.push(item); 
     }); 
    } 
}; 

因为我没有得到一个实际的错误信息,我不知道在哪里可以从这里走。任何帮助是极大的赞赏。

+0

我尝试刷新关系为{User} <-> {UserRoleMap} <-> {Role}的实体时遇到了同样的错误。我将错误追溯到“EntityGroup”的“proto.attachEntity”。以下代码存在: if(this._entities [ix] === entity)aspect.entityState = entityState; 退货实体; } throw new Error(“This key is already attached:”+ aspect.getKey()); 如果实体正在从服务器查询刷新,我认为相等比较会失败并导致错误。 – KRam

回答

0

“失败”承诺中的返回值是一个具有多个属性的JavaScript对象。根据失败情况,您可以通过在调试器中详细查看此对象来找到更多信息。

+0

谢谢,我只是把错误写出来给控制台,它指出了错误:'这个键已经连接'。现在我只需要弄清楚如何摆脱那个实体并将其替换为新实体。 – rchamberlin

+0

不确定你需要。 Breeze使用相同的密钥自动将传入实体与缓存中的任何实体合并。任何导航属性也会更新。因此,请尝试删除'querySucceeded'中的'forEach'循环,您可能会发现您的收藏已经更新。 –

+0

我怀疑杰伦是对的。如果是这样,异常将引发到querySucceeded方法中,而不是Breeze。来自任何来源的异常都会流入您的queryFailed。 querySucceeded顶部的断点将解决该问题。 – Ward