使用路径表达式node.js进行查询

2020-09-02 20:24发布

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

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


有关查询中路径表达式的问题。

此处中指出 在查询中受支持。

此处 方法可以返回cds.ql对象。

cds.ql对象与CQL对象相同,后者是已解析的CDS查询的AST。 解析是通过cds.parse.cql方法完成的,该方法仅接受CDS sql语句作为输入。 这意味着它不能与路径表达式一起使用,因为定义位于模型的关联中,并且解析器不知道模型。 当然,输出不包含join子句或mixin。

稍后,当CQL对象转换为SQL时,模型就在那里了,但是引用解析器没有检查模型中的关联路径。

AST/CQL中的Mixins正确,但是在cds-sql(转换器)中不支持此功能。

那么如何在查询中使用路径表达式? 将模型添加到查询解析器,或者更正sql转换器以读取关联? 或者,如尚无法实现(如mixin),何时计划此功能?

如果需要一个示例,只需在标准书店模型上运行此查询即可:

 cds.parse.cql("从Books.author中选择ID");
 

如果使用sqlite,将给您一个错误,指示Books_author表不存在。 由于引用解析器不知道作者是一个关联而不是表名。

非常感谢Martin

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

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


有关查询中路径表达式的问题。

此处中指出 在查询中受支持。

此处 方法可以返回cds.ql对象。

cds.ql对象与CQL对象相同,后者是已解析的CDS查询的AST。 解析是通过cds.parse.cql方法完成的,该方法仅接受CDS sql语句作为输入。 这意味着它不能与路径表达式一起使用,因为定义位于模型的关联中,并且解析器不知道模型。 当然,输出不包含join子句或mixin。

稍后,当CQL对象转换为SQL时,模型就在那里了,但是引用解析器没有检查模型中的关联路径。

AST/CQL中的Mixins正确,但是在cds-sql(转换器)中不支持此功能。

那么如何在查询中使用路径表达式? 将模型添加到查询解析器,或者更正sql转换器以读取关联? 或者,如尚无法实现(如mixin),何时计划此功能?

如果需要一个示例,只需在标准书店模型上运行此查询即可:

 cds.parse.cql("从Books.author中选择ID");
 

如果使用sqlite,将给您一个错误,指示Books_author表不存在。 由于引用解析器不知道作者是一个关联而不是表名。

非常感谢Martin

付费偷看设置
发送
8条回答
追夢秋陽
1楼 · 2020-09-02 21:06.采纳回答

我结束了这个问题,并了解到node.js尚不具备这些功能。 我将添加另一个问题以寻求路线图。

感谢您的帮助! 马丁

SAP小黑
2楼-- · 2020-09-02 21:02

嗨,

我认为这是您想要的:

 SELECT.from('Books')。columns('author.ID')

致谢

塞缪尔

当学会了学习
3楼-- · 2020-09-02 21:03

在from子句中的关联中导航的首选语法是:在实体名称和(第一个)关联之间使用冒号。 就您而言

 cds.parse.cql("从书籍中选择ID:作者")

这样,解析器已经可以生成有效的CQN。

空代码
4楼-- · 2020-09-02 20:59

对不起,错误的链接,请在这里查看:

https://cap.cloud.sap/docs/node.js/api

从"(实体,列?)搜索SELECT部分​​"中,还有另一个示例。

亦是此间程序员
5楼-- · 2020-09-02 20:55

嗨,

我不确定我是否理解这个问题(因此,如果我的回答是错误的,请原谅我),但这对我有用:

 cds.run(cds.parse.cql("从MY_BOOKSHOP_BOOKS中选择SELECT author_ID"));


 ⇢[{author_ID:101},
   {author_ID:107},
   {author_ID:150},
   {author_ID:150},
   {author_ID:170}]
 

干杯

Pierre

闻人可可
6楼-- · 2020-09-02 21:06

你好,塞缪尔。 这是另一只动物。 当您这样做时,它会变得非常有趣:

 SELECT.from(" books")。columns((proxy)=> {
   proxy.author.id.as(" cute_alias");
 })

并使用javascript代理对象的功能。 但是,这值得在其他地方进行讨论。

CPLASF-自律
7楼-- · 2020-09-02 20:51

现在我看到,基本上,像mixin一样,node.js尚不支持在选择查询中使用关联的功能。

然后可以添加到文档中的那部分,以便清楚地知道此功能仅适用于Java吗?

非常感谢。

一周热门 更多>