CAP CDS NodeJS在自定义逻辑中创建动态联接

2020-08-21 23:07发布

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

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


专家们,

我需要在CAP中创建动态查询。 为此,我将NodeJS用作具有自定义逻辑的中间层。 在此自定义逻辑中,我想联接两个表,但是基于过滤器,联接中的表可以不同。 我想使用CAP CDS语法来构建这样的查询:" SELECT * from Foo.a上的Foo INNER JOIN Bar = Bar.a"

从实时测试器中解析 https://cap.cloud.sap/docs/04-CDS/pegjs/

选择:
   列: ["*"]
   来自:{join:内部,参数:[{ref:[Foo]},{ref:[Bar]}]],打开:[{ref:[Foo,a]},=,{ref:[Bar,a]  }]} 

我想使用查询表示法建立相同的联接。 它在文档中,但我缺少一个示例:

https://cap.cloud.sap/docs/cds/cqn#joins

到目前为止,我已经尝试过:

let query = {join:"自然",来源:[Table1Source,Table2Source],上:" Table1Source.A = Table2Source.A"}

let query = SELECT.from({join:" natural",sources:[Table1Source,Table2Source],on:" Table1Source.A = Table2Source.A"}}

任何人都经历过使用CAP在nodejs自定义逻辑中建立联接的经历吗?

提前谢谢!

K,伍特

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

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


专家们,

我需要在CAP中创建动态查询。 为此,我将NodeJS用作具有自定义逻辑的中间层。 在此自定义逻辑中,我想联接两个表,但是基于过滤器,联接中的表可以不同。 我想使用CAP CDS语法来构建这样的查询:" SELECT * from Foo.a上的Foo INNER JOIN Bar = Bar.a"

从实时测试器中解析 https://cap.cloud.sap/docs/04-CDS/pegjs/

选择:
   列: ["*"]
   来自:{join:内部,参数:[{ref:[Foo]},{ref:[Bar]}]],打开:[{ref:[Foo,a]},=,{ref:[Bar,a]  }]} 

我想使用查询表示法建立相同的联接。 它在文档中,但我缺少一个示例:

https://cap.cloud.sap/docs/cds/cqn#joins

到目前为止,我已经尝试过:

let query = {join:"自然",来源:[Table1Source,Table2Source],上:" Table1Source.A = Table2Source.A"}

let query = SELECT.from({join:" natural",sources:[Table1Source,Table2Source],on:" Table1Source.A = Table2Source.A"}}

任何人都经历过使用CAP在nodejs自定义逻辑中建立联接的经历吗?

提前谢谢!

K,伍特

付费偷看设置
发送
4条回答
路亽曱_Ryan
1楼 · 2020-08-21 23:31.采纳回答

亲爱的伍特

您可以执行以下操作:

 SELECT.from('A')
           .join('B')
           .on({'A.x':{'>':'B.y'}})
           .and({''A.x':null})

 SELECT.from('Null')
         .join('一个')
         .on('Null.a','=','One.a')
         .leftJoin('Two')
         .on('One.a','=','Two.b')
         .rightJoin('三个')
         .on('Three.b','=','Null.a')
         .join('四个')

但是,这些API尚未记录。

最诚挚的问候,
David

昵称总是被占用
2楼-- · 2020-08-21 23:27

我的问题是我该如何使用NodeJS API而不是查询符号来做到这一点?

Nan4612
3楼-- · 2020-08-21 23:15

嗨,Wouter ,

然后,您需要提供表的名称。

提示:如果您使用CDS REPL,则可以轻松地使用它。

>> cds r

最诚挚的问候,
David

宇峰Kouji
4楼-- · 2020-08-21 23:34

如果使用源而不是表名称的字符串进行联接,该怎么办? 我应该在on条件下使用什么?

例如:

 const {table1,table2} = cds.entities(" be.wl.tables");
 SELECT.from(表1)
   .join(表2)
   .on({'table1.x':{'=':'table2.y'}})

 

一周热门 更多>