首页 > 解决方案 > 自定义 OData 服务在 iOS SAP Cloud Platform 应用程序上缺少属性

问题描述

为了理解 OData <-> SAP Cloud Platform 链接,我使用适用于 Node.js 的 Jaystack OData V4 服务器 ( https://jaydata.org/jaystack-odata-v4-server ) 库开发了自己的最小 OData 服务.

首先,我添加了一个属性 - “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>

当我使用此服务作为目标生成应用程序时,一切正常:

生成的应用程序的屏幕截图,显示具有单个“ID”属性的所有实体

一旦我尝试向我的 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 服务,这似乎不是问题,所以我猜它与操纵杆库有关,或者可能是一个小怪癖。

任何帮助将不胜感激!

标签: sap-fiorisap-cloud-platformsap-cloud-sdk

解决方案


推荐阅读