Доступ к файлу макета модели OData JSON и серверной части SAP

У меня есть приложение, которое работает в тестовых целях с локальными фиктивными данными JSON. Объект oData содержит массивы со значениями, и приложение работает по желанию. Теперь мы переключаемся с локального файла фиктивных данных на потребление данных с помощью службы oData из серверной системы SAP. Здесь я получаю данные в объектах JSON, и не все функции работают должным образом (пример функций фильтра).

Может ли кто-нибудь поделиться со мной мыслями об объектах и ​​массивах JSON? И как мне получить данные из серверной системы в виде массива вместо объекта?

В версии с фиктивными данными я делаю это, чтобы определить свою модель:

this._oModel = new JSONModel(jQuery.sap.getModulePath("myApplication", "/localService/mockdata/nodesSet.json"));

Доступ к файлу макета модели OData JSON и серверной части SAP

В версии oData модель определена в manifest.json:

this._oModel = this.getOwnerComponent().getModel();

Доступ к файлу макета модели OData JSON и серверной части SAP

Примечание. Мне известны разные имена объектов (например, nodes vs nodesSet), и это не часть проблемы.

Спасибо!

что точно не работает с oData?

Nandan Chaturvedi 05.07.2018 16:28

Зачем вообще нужен доступ к внутреннему свойству oData? Почему приложению нужно заботиться о том, массив это или карта? Если все приложение было построено на основе предположения, что oData является массивом, я боюсь, что переход на ODataModel, который является серверная модель в отличие от JSONModel, будет для вас огромной задачей.

Boghyon Hoffmann 05.07.2018 17:04

хорошая точка зрения. У меня нет прямого доступа к свойству oData, но я определил это как разницу между моей рабочей и нерабочей версией. Код, который не работает: aItems = this._oModel.getData (). Nodes (или .... nodesSet в моей версии oData).

Cruncher 05.07.2018 17:25
Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
0
3
321
1

Ответы 1

Одним из простых способов было бы не создавать модель в манифесте, а выполнять явное чтение в контроллере как:

			var oModel = new sap.ui.model.odata.v2.ODataModel(url, true);	
					that=this;
					 oModel.read( "/Products", {
						urlParameters: { 
							"$skip": 0,
							"$top": 50
						},
						success: function( oData) {	
							//here oData shall have an array of objects "results"
          
**-------------Set the model here using this array -> results ------**
							
						},
						error: function(oError) {
							alert("error");
						}
					});

Однако я не горжусь этим решением и проверю, смогу ли я лучше прокомментировать.

Другие вопросы по теме