#breeze
#breeze
Вопрос:
Версия Breeze: 1.4.14
У меня есть 2 сущности: Person и Patient. У пользователя есть список телефонов, и пациент наследуется от Person.
Я могу запросить на сервере:
var patients = Patients.Where(x => x.Telephones.Where(xx => xx.Number == "XXXX-XXXX").Any());
Я также могу получить результаты, вставив этот URL-адрес в браузер:
/breeze/Patients?$filter=Telephones/any(x1: x1/Number eq 'XXXX-XXXX')
Но если я попытаюсь выполнить запрос breeze от клиента
var query = breeze.EntityQuery.from("Patients");
query = query.where("telephones", "any", "number", "==", "XXXX-XXXX");
Я получаю сообщение об ошибке:
"TypeError: Cannot read property 'isAnonymous' of undefined breeze.debug.js:14807:34"
Если я изменю запрос на базовую таблицу «Person», это сработает:
var query = breeze.EntityQuery.from("Person");
query = query.where("telephones", "any", "number", "==", "XXXX-XXXX");
Но мне действительно нужны все данные пациента … я что-то делаю неправильно или это ошибка?
Ответ №1:
Сейчас я не знаю, является ли это ошибкой, но я устраняю ее, вызывая toType()
в своем запросе:
var query = breeze.EntityQuery.from("Patients").toType("Patient");
query = query.where("telephones", "any", "number", "==", "XXXX-XXXX");
Комментарии:
1. Если вам пришлось вызывать toType(), то, скорее всего, у вас не настроено сопоставление имени ресурса / типа сущности. Смотрите раздел «Сопоставление EntityType / resourceName» здесь: breezejs.com/documentation/querying-locally
2. @JayTraband, если я не использую условие «any» (но использую другие), запрос работает нормально!
3. У меня точно такая же проблема, что и у @Leo, при использовании «any» или «all» мне пришлось использовать . toType(), иначе это не сработает.
Ответ №2:
Привет, используйте этот код для решения вашей проблемы…
var query = breeze.EntityQuery.from("Patients);
query = query.where("telephones", "breeze.FilterQueryOp.any", "number", "breeze.FilterQueryOp.eq", "XXXX-XXXX");