点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好,
通过使用Node.js创建简单的OData V4服务,我在SAP Cloud Platform Cloud Foundry HANA 2.0中使用OData V4遇到了问题。 该应用程序主要是通过" SAP Cloud Platform业务应用程序"向导创建的。 它工作正常,除非我开始使用关联。 看起来关联的子实体正在引用自身(用$ expand调用)。
在我的数据库中,我得到以下数据(简单的父级子级):
该实体的外观如下。
命名空间my.app; 实体PARENT { 密钥ID:整数; CHILDS:CHILDS.PARENT_ID = ID上与CHILD的关联[*]; } 实体CHILD { 密钥ID:整数; PARENT_ID:整数; }
我对服务的期望是这样的:
[ { " ID":1 "儿童":[ { " ID":1 " PARENT_ID":1 } ] }, { " ID":2 "儿童":[ { " ID":2 " PARENT_ID":2 }, { " ID":3, " PARENT_ID":2 } ] } ]
我想要在扩展的CHILDS中,每个CHILD.PARENT_ID等于PARENT.ID的孩子。
相反,我为每个PARENT项都获得了CHILDS,其中CHILD.PARENT_ID等于CHILD.ID: >
/catalog/PARENT?$ expand = CHILDS
如果有人可以告诉我我做错了什么,我会很高兴。
为了更好地理解此处的内容,我是如何创建应用程序以及更改的内容。
向导创建应用
作为服务,我想使用Node.js。 所选数据库版本2.0 SPS 04是我可以从下拉菜单中选择的最新HANA数据库。 并保持简单而不使用UAA。
更改了一个简单的父子示例的数据库data-model.cds
文件位置:/db/data-model.cds
命名空间my.app; 实体PARENT { 密钥ID:整数; CHILDS:CHILDS.PARENT_ID = ID上与CHILD的关联[*]; } 实体CHILD { 密钥ID:整数; PARENT_ID:整数; }
我后来也尝试使用CHILDS:与CHILDS.PARENT_ID = ID上的许多CHILD关联;
我也尝试使用$ self.ID代替ID。
没有任何工作如我预期的那样。
更改了cat-service.cds
文件位置:/srv/cat-service.cds
使用my.app作为'../db/data-model'中的my; 服务CatalogService { 实体PARENT作为my.PARENT的投影; 实体CHILD作为my.CHILD的投影; }
通过data-model.cds生成的.hdbcds,方法是右键单击Build> Build CDS
该服务本身会生成所有hdbcds文件:
通过右键单击数据库文件夹构建
然后它为我生成了表格。 而且我可以与Database-Explorer连接以查看其数据。
添加测试数据
右键单击"运行">"以Node.js应用程序运行"启动Node.js服务
该应用程序启动时没有任何问题。 服务也很好
/catalog/PARENT
/catalog/CHILD
/catalog/PARENT?$ expand = CHILDS
更多技术信息:
我正在使用Cloud-Foundry:
https://api .cf.eu10.hana.ondemand.com
/db/package.json
{ " name":"部署", "依赖关系":{ " @ sap/hdi-deploy":" ^ 3.8.2" }, "引擎": { " node":" ^ 8" }, "脚本":{ " postinstall":" node .build.js", "开始":"节点node_modules/@sap/hdi-deploy/deploy.js" } }
/srv/package.json
{ " name":" nodev4-srv", " description":"从../package.json生成,请不要更改!", " version":" 1.0.0", "依赖关系":{ " @ sap/cds":" ^ 3.7.1", " express":" ^ 4.16.4", " hdb":" ^ 0.17.0" }, "引擎": { " node":" ^ 8.9", " npm":" ^ 6" }, " devDependencies":{}, "脚本":{ " postinstall":" npm重复数据删除&&节点.build.js", " start":"节点./node_modules/@sap/cds/bin/cds.js服务gen/csn.json", " watch":" nodemon -w。-i node_modules/** ,. git/** -e cds -x npm运行构建" }, "私人":是的, " cds":{ "要求":{ "D b": { " kind":" hana", " model":" gen/csn.json" } } } }
/package.json
{ " name":" nodev4", " description":"由cds init生成", " repository":" <在此处添加您的存储库>", " license":" <在此处添加您的许可证>", " version":" 1.0.0", "引擎": { "节点":" ^ 8.9" }, "文件":[ "D b", " srv" ], "依赖关系":{ " @ sap/cds":" ^ 3.7.1", " express":" ^ 4.16.4", " hdb":" ^ 0.17.0" }, " devDependencies":{}, "脚本":{ " start":" cds运行", " build":" cds build/all --clean", " deploy":" cds部署" }, " cds":{ "要求":{ "D b": { " kind":" hana", "型号":[ "D b", " srv" ] } } } }
(49.0 kB)
看起来好像" @ sap/cds"有问题。 生成的版本^ 3.7.1在此类要求方面存在问题。 如果版本更改为3.5.0,则不会出现此问题。 然后,它可以与预期的代码一起使用。
一周热门 更多>