点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好,
我使用CAP和Node.js创建了一个简单的项目。 来源可在此处找到: https://github.com/ceedee666/rqk_ws19_v3 /。 我的项目仅包含一个称为SurveyResponses的CDS实体,该实体通过服务公开。 实体的CDS如下所示:
名称空间de.fhaachen.rqkws19; 实体SurveyResponses {密钥ID:UUID; orderid:整数; orderDate:DateTime; ...}
在使用SQL脚本向数据库中添加了一些虚拟数据之后,我可以使用以下URL访问数据库中的所有实体:/survey/SurveyResponses
在OData v4中,可以通过其标识符寻址单个实体。 这是 odata.org 上Northwind服务的示例: https://services.odata.org/Experimental/OData/OData.svc/Persons(0 )。 当我使用我的服务尝试相同操作时,例如 使用此URL/survey/SurveyResponses('E65A56807C68EFCA160009027C5C71B7'),我收到以下错误消息:
在位置17的'SurveyResponses('E65A56807C68EFCA160009027C5C71B7')'中找不到预期的uri令牌'ODataIdentifier'
当我尝试使用以下$ filter表达式访问实体时:/survey/SurveyResponses?$ filter = ID eq E65A56807C68EFCA160009027C5C71B7,我收到此错误消息
类型'SurveyService.SurveyResponses'中不存在属性'E65A56807C68EFCA160009027C5C71B7'
但是,如果我尝试使用过滤器访问orderid属性,那么一切都会按预期进行。/survey/SurveyResponses?$ filter = orderid eq 263的请求导致
{ " @ odata.context":" $ metadata#SurveyResponses", " @ odata.metadataEtag":" W/\" v7XePRvoicjsrRX1rhd6CPTx23lX + KlEgqRqmcp4pts = \"", "值":[ { " ID":" E65A56807C68EFCA160009027C5C71B7", " orderid":263, " orderDate":" 2019-10-09T14:40:18Z", " netPromoterScore":4 "评论":"", " marketingOptIn":否, " responseDate":null, "状态":1 } ] }
任何想法如何解决这个问题? 我是否错过了实体或服务的定义?
先谢谢了。
基督徒
将正确格式的测试数据添加到数据库(dddddddd-dddd-dddd-dddd-dddddddddddddd)中之后,请求现在可以按预期工作。
使用URL/survey/SurveyResponses(E65A5680- 7C68-EFCA-1600-09027C5C71B7)结果为
基督徒
我将CDS更改为此
现在,我可以使用以下URL访问单个实体:/survey/SurveyResponses('E65A56807C68EFCA160009027C5C71B7')。 现在要求单引号必须是有效的Edm.String。
潜在的问题似乎是我使用SQL函数SYUUID在数据库中创建了条目。 此函数以上面URL中显示的格式生成UUID。 相比之下,Edm.GUID需要以下格式:'dddddddd-dddd-dddd-dddd-dddddddddddd',其中每个d表示[A-Fa-f0-9](参见 https://www.odata.org/documentation/odata-version-2-0/overview /)。 我将使用正确的Edm.GUID格式再试一次。
基督徒
嗨,
您不需要添加单引号。 这应该起作用:
编辑:默认情况下,UUID映射到Edm.Guid,但您可以根据需要更改此行为-> https://cap.cloud.sap/docs/guides/domain-models#mapping-uuids-to-odata
干杯
Pierre
您好, Volker Buzek ,
目前没有 我有初始版本:
使用正确的Edm.GUID(dddddddd-dddd-dddd-dddd-dddddddddddddd),此操作可以按预期工作。 最好的部分是,使用POST请求添加实体时,会自动创建正确的GUID。
具有备用键也是一个好主意。 接下来,我将尝试将其发布到此处。
但是您发布的两个版本之间有什么区别? 对我来说,它们看起来完全一样,还是我缺少什么?
基督徒
您好, Pierre Demouzon ,
感谢您的回复。
没有单引号,我得到以下错误消息:null'E65A56807C68EFCA160009027C5C71B7'不是有效的密钥。 此错误源自_parseCompoundKey方法。
最佳
基督徒
一周热门 更多>