2013-03-13 2 views
0

С приведенным ниже кодом у меня возникает проблема, когда не все столбцы являются данными возврата в массиве data.results. Например, если col4 имеет значение null в базе данных для строки 1, тогда data.results [0] не содержит элемент для col4, но строка 2 имеет значение then data.results [1] будет содержать значение для col4. Я хотел бы, чтобы каждый возвращаемый элемент в массиве содержал все элементы со значением базы данных или null. Если null не может быть возвращен, тогда будет пустая строка.запрос объекта breezejs с select return 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».

BreezeConfig позволяет настраивать компоненты, поддерживающие связанные с Breeze операции в веб-API. 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

+0

Нет проблем, но, пожалуйста, отметьте элемент как ответ, поэтому мне не нужно возвращаться, чтобы проверить его. :) спасибо –