У пользовательской службы OData отсутствует свойство в приложении iOS SAP Cloud Platform - PullRequest
1 голос
/ 25 октября 2019

Чтобы понять связь 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>

Когда я генерирую приложение, используя этот сервис в качестве места назначения, все работает нормально:

Screenshot of the generated app showing all entities with the single 'ID' property

Как только я пытаюсь добавить другое свойство в мою модель OData - например, "myOtherProperty", я получаю следующее сообщение при повторной генерации изапуск приложения:

Missing property error when running the re-generated app

Когда я смотрю на необработанный 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 это некажется, проблема, поэтому я думаю, что этов библиотеку джойстиков, или, возможно, небольшую причуду.

Любая помощь будет высоко ценится!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...