Чтобы понять связь OData <-> SAP Cloud Platform, я разработал собственную минимальную службу OData с использованием сервера Jaystack OData V4 (https://jaydata.org/jaystack-odata-v4-server) библиотека для Node.js.
Для начала я добавил одно свойство - «ID».
Вот файл метаданных:
<?xml version="1.0" encoding="UTF-8"?>
<edmx:Edmx xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" Version="4.0">
<edmx:DataServices>
<Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Northwind">
<EntityType Name="Repair">
<Key>
<PropertyRef Name="ID"/>
</Key>
<Property Name="ID" Type="Edm.String" Nullable="false">
<Annotation Term="Org.OData.Core.V1.Computed" Bool="true"/>
<Annotation Term="UI.DisplayName" String="ZSRE Return Document Number"/>
<Annotation Term="UI.ControlHint" String="ReadOnly"/>
</Property>
</EntityType>
<EntityContainer Name="DefaultContainer">
<EntitySet Name="Repair" EntityType="Northwind.Repair"/>
</EntityContainer>
</Schema>
</edmx:DataServices>
</edmx:Edmx>
Когда я генерирую приложение, используя этот сервис в качестве места назначения, все работает нормально:
Как только я пытаюсь добавить другое свойство в мою модель OData - например, "myOtherProperty", я получаю следующее сообщение при повторной генерации изапуск приложения:
Когда я смотрю на необработанный JSON из службы, свойство myOtherProperty, на которое он жалуется, явно отсутствуеттам:
{"@odata.context":"http://localhost:3000/$metadata#Repair","value":[{"@odata.id":"http://localhost:3000/Repair('5065879381')","ID":5065879381,"**myOtherProperty**":2311671387},{"@odata.id":"http://localhost:3000/Repair('7651842623')","ID":7651842623,"**myOtherProperty**":3928577920}]
Вот обновленная схема:
<edmx:Edmx xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" Version="4.0">
<edmx:DataServices>
<Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Northwind">
<EntityType Name="Repair">
<Key>
<PropertyRef Name="ID"/>
</Key>
<Property Name="ID" Type="Edm.String" Nullable="false">
<Annotation Term="Org.OData.Core.V1.Computed" Bool="true"/>
<Annotation Term="UI.DisplayName" String="ZSRE Return Document Number"/>
<Annotation Term="UI.ControlHint" String="ReadOnly"/>
</Property>
<Property Name="myOtherProperty" Type="Edm.Int32"/>
</EntityType>
<EntityContainer Name="DefaultContainer">
<EntitySet Name="Repair" EntityType="Northwind.Repair"/>
</EntityContainer>
</Schema>
</edmx:DataServices>
</edmx:Edmx>
Любая идея, почему SDK может жаловаться на отсутствующее свойство? Кажется, что с другими примерами служб OData это некажется, проблема, поэтому я думаю, что этов библиотеку джойстиков, или, возможно, небольшую причуду.
Любая помощь будет высоко ценится!