2013-01-10 10 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