2014-09-29 5 views
0

Если у меня есть таблица с двумя числовыми столбцами, скажем X и Y, и вам нужно получить строки, где говорят X> Y. Как я могу достичь этого с помощью BreezeJS? Все примеры, с которыми я столкнулся, способны сравнивать столбцы с фиксированным значением.Фильтровать по столбцу или столбцу в BreezeJS

Edit: Я попытался с помощью .where("Id", "==", "Id") только для тестирования и получил следующее сообщение об ошибке:

запросов не удалось: был обнаружен Бинарный оператор с несовместимыми типами. Найдено типы операндов «Edm.Int32» и «Edm.String» для вида оператора «Equal».

Чтобы подтвердить, что не было ошибок с запросом, я попробовал .where("Id", "==", 1), и он прошел.

Любой ключ к этому кому-нибудь?

ответ

1

Когда Breeze выполняет запрос, он проверяет строку в правой части предиката, чтобы определить, является ли это именем свойства вместо литерала и по умолчанию будет выбирать значение для свойства как свойства, если свойство одно и то же имя существует в запросе типа. Поэтому, если «qtyOrdered» и «qtyAvailable» являются одновременно свойствами типа «Заказ», то поддерживается следующее.

var query = EntityQuery.from("Order").where("qtyOrdered", ">", "qtyAvailable"); 

Это поведение также может быть переопределено (иногда необходимо для строковых столбцов), но редко требуется.

+0

Это то, что я сделал изначально, но получил это сообщение об ошибке: «Запрос не выполнен: обнаружен двоичный оператор с несовместимыми типами. Найдено типы операндов« Edm.Decimal »и« Edm.String »для типа оператора« LessThan ». , Я также убедился, что имена столбцов совпадают. Оба являются десятичными знаками, один из которых является нулевым. – Ziad

+0

Убедитесь, что оба имени являются «клиентскими» боковыми именами, если вы используете namingConvention, например «camelCasing». Если это правильно, то проверьте метаданные entityType, вызвав entityType.getProperty для обоих имен свойств и убедитесь, что вы получаете dataProperty с ожидаемыми типами данных для обоих вызовов. –

+0

Фактически. («Идентификатор», «==», 1) работает отлично, но не. («Идентификатор», «==», «Ид»). Оба не будут работать, если есть несоответствие имени. Не знаю, как я могу получить доступ к entityType.getProperty. Можете ли вы рассказать об этом, пожалуйста? – Ziad

Смежные вопросы