带有select的breezejs实体查询返回未定义

带有select的breezejs实体查询返回未定义,breeze,Breeze,对于下面的代码,我遇到了一个问题,即并非所有列都是data.results数组中的返回数据。例如,如果第1行的数据库中col4为null,则data.results[0]不包含col4的元素,但第2行具有值,则data.results[1]将包含col4的值。我希望数组中的每个返回项都包含数据库值或null的所有项。如果不能返回null,则可以使用空字符串 var query = new breeze.EntityQuery() .from('mytable')

对于下面的代码,我遇到了一个问题,即并非所有列都是data.results数组中的返回数据。例如,如果第1行的数据库中col4为null,则data.results[0]不包含col4的元素,但第2行具有值,则data.results[1]将包含col4的值。我希望数组中的每个返回项都包含数据库值或null的所有项。如果不能返回null,则可以使用空字符串

    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);
}

默认情况下,breeze不会序列化JSON结果中的空值。这是一个经过深思熟虑的选择,以减少导线上方的微风载荷。和。。对于返回“实体”的查询,这通常不是一个问题。i、 e.存在BREESE元数据的数据。因为这些属性已经在这些实体上定义

但是如果您返回的是匿名结果,那么这可能是一个问题。显然,您可以解决这个问题,因为您知道您正在请求的属性,并且可以在查询后更新它们(如果它们不在结果中)

但是您也可以通过“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;  
} 

希望这能有所帮助。

没问题,但请将项目标记为已回答,这样我就不必继续回去查看了。:)谢谢