2016-09-30 2 views
0

Я хочу найти OData-Service для отдельных записей, содержащих подстроки имен или адресов, которые я ввожу в свой интерфейс. Объект sap.ui.model.odata.v2.ODataModel имеет метод read(), который предназначен только для этого, но я вообще не получаю документацию. Я хочу найти коллекцию «PatientSet» моей OData-Service для определенных подстрок имен. Кроме того, я хочу искать определенные адреса в одной службе с тем же поисковым запросом. «AddressSet» - это коллекция для себя, связанная с «PatientSet» через навигационное свойство «Адреса». Сейчас мой поисковый запрос строится следующим образом:поиск в sap.ui.model.odata.v2.ODataModel

this.oModel.read(
       "/PatientSet?$expand=Addresses(/Name/Family='" + familyName + "',/Name/First='" + firstName + "')",     
       { 
        success: function(data, result) {console.log(result)}, 
        error: function(err) {alert(err)} 
       } 
      ); 

Поиск адресов не включен в запросе еще. В документации указано, что метод read() - «Запустит запрос GET для службы odata, который был указан в конструкторе модели. Данные будут сохранены в модели. Запрошенные данные возвращаются с ответом». же ответ, который я получаю на эту просьбу, говорит что-то совершенно другое:

Request 
URL:http://XXXXXXXX/proxy/http/XXXXXXXXX/sap/opu/odata/XXXXXXXXX/$batch 
Request Method:POST 
Status Code:202 Accepted 
Remote Address:[::1]:54273 


Response 
--9D0C08B072143EFCC9C3A1A7A24358190 
Content-Type: application/http 
Content-Length: 1796287 
content-transfer-encoding: binary 

HTTP/1.1 200 OK 
Content-Type: application/atom+xml;type=feed 
Content-Length: 1796172 
dataserviceversion: 2.0 

Далее следует ответ XML, содержащий первую тысячу записей в коллекции «PatientSet». Итак, почему метод «read()» запускает пакетный запрос, содержащий POST-запрос? И почему вообще нет фильтрации?

ответ

0

Я думаю, вам стоит больше узнать о v2.ODataModel. Есть ли причина, по которой вы вызываете read() вручную, вместо того, чтобы позволить ODataModel делать все, что вы за кулисами?

В любом случае, как правило, для этого вы бы использовали фильтры. Посмотрите на this code of Navigation & Routing tutorial. Если вам нужен какой-то «полный текстовый поиск», вам нужно будет отправить настраиваемый параметр в OData 2.0 («поиск», если вы используете SAP GW). В OData 4.0 существует даже стандартный «$ search», но официально UI5 и SAP GW по-прежнему не поддерживают OData 4.0 для производства ... К вашему другому вопросу: пакетная обработка включена по умолчанию в файле v2.ODataModel.

+0

Это то, чего я пытаюсь достичь: http://stackoverflow.com/questions/39791655/odata-v2-filtering-in-expanded-collection – doktormatte