2013-03-13 61 views
0

隨着下面的代碼我有一個問題,不是所有的列都返回data.results數組中的數據。例如,如果數據庫中第1行的col4爲空,則data.results [0]不包含col4的元素,但第2行具有值,則data.results [1]將包含col4的值。我希望數組中的每個返回項都包含具有數據庫值的所有項目或爲null。如果null不能被返回,那麼一個空字符串會做。breezejs實體查詢與選擇返回undefined

var query = new breeze.EntityQuery() 
      .from('mytable') 
      .where('col1', 'substringof', '2') 
      .select('col1,col2,col3,col4') 
      .orderBy('col1') 
      .take(200); 


    return _manager 
     .executeQuery(query) 
     .then(function (data) { 
      return data.results; 
     }) 
     .fail(queryFailed); 
} 

回答

0

默認情況下,breeze不會在其JSON結果中序列化空值。這是一個故意的選擇,以減少電線上的微風有效載荷。並且..這通常不是返回「實體」的查詢的問題。即微風元數據存在的數據。因爲這些屬性已經在這些實體上定義。

但是,如果您按原樣返回匿名結果,那麼這可能是一個問題。你顯然可以解決它,因爲你知道你正在請求的屬性,並且如果它們不在結果中,可以在查詢之後更新它們。

但是,您還可以通過「BreezeConfig」類更改breeze的默認配置以適應此情況。

BreezeConfig支持在Web API中定製支持Breeze相關操作的組件。 BreezeConfig定義了默認行爲;你可以通過派生自己的行爲並重寫它的虛擬方法來替代你自己的行爲。 Breeze.NET將在您的項目引用的程序集中發現您的子類,並使用它來代替BreezeConfig。

使用BreezeConfig來配置具有特定設置的Json.Net序列化程序。您可以通過編寫BreezeConfig的一個子類覆蓋「CreateJsonSerializerSettings」方法,如在這個例子中替換這些設置:

public class CustomBreezeConfig : Breeze.WebApi.BreezeConfig {  
    protected override JsonSerializerSettings CreateJsonSerializerSettings() { 
    var baseSettings = base.CreateJsonSerializerSettings();  
    baseSettings.NullValueHandling = NullValueHandling.Include; 
    return baseSettings; 
} 

希望這有助於。

+0

謝謝,正是我所需要的 – mike 2013-03-13 23:59:24

+0

沒問題,但請標記爲已回答的項目,所以我不必再繼續檢查它。 :) 謝謝 – 2013-03-14 09:34:03