CDS实体的生成字段名称在本地和HDB上不同

2020-08-27 08:09发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 我正在使用CAP(Nod...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我正在使用CAP(Node.js)构建应用程序,该应用程序还利用了一些自定义处理程序。

在这些处理程序中,由于大小写行为不同,我在处理从CDS视图中选择的实体时遇到问题。 遵循建议,已创建所有属性,从小写字母开始,然后根据需要创建骆驼,例如e。 G。 " parentNode"。

想象一下使用实体HierarchyNodes和分配给一个层次结构节点之一的Product建模的层次结构。

为了阅读更多层次结构信息,实现了自定义处理程序。

虽然这在SQLite DB上可以很好地在本地工作,但在HDB上生成的名称是不同的(全部大写)。

下面的代码展示了实现的逻辑。

 const products =等待tx.run(SELECT()。from(Products).where({ID:productKey}));
  如果(products.length = 1)
    const nodeIds =等待tx.run(SELECT('​​ID')。from(HierarchyNodes).where({ID:products [0] .hierarchyNode_ID})); 

在HDB产品[0] .hierarchyNode_ID上未定义,因为只有属性产品[0] .HIERARCHYNODE_ID。

在我看来,这是有问题的,因为两种环境的反应都应相似。

我暂时通过在选择函数中说明列名来解决这个问题,例如 SELECT('​​hierarchyNode_ID')。 这将导致对象在SQLLite和HDB上具有属性hierarchicalNode_ID。

如果我做错了什么或者这是一个错误,请告诉我。

感谢
Arne

3条回答
wang628962
2020-08-27 08:49

您好,Arne,

实际上,sqlite和hdb应该为两个数据库返回相同大小写的值。 在某些情况下,我们无法做到这一点,例如,如果您运行SELECT.from('Books'),而Books不在模型中或在模型中以不同的方式命名。

但是,如果将csn实体传递给SELECT.from(),它应该可以立即使用。 您能否提供有关模型的更多信息,以及产品和HierarchNodes来自何处以及它们的外观?

最好的问候
塞缪尔

一周热门 更多>