如何在CAP服务上使用.get(string-url)?

2020-08-20 13:23发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)你好 是否可以使用.get(s...

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

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


你好

是否可以使用.get(string_url)表示法从其自己的自定义处理程序之一调用服务的端点?

CAP 文档提到了以下消耗 外部服务,包括tx.get()方法:

//连接到外部服务器
 const srv = cds.connect.to('my.external.service')
 const {作者} = srv.entities

//与外部服务共享请求上下文
//在自定义处理程序中
 const tx = srv.transaction(req)

//网址字符串输入
 const response =等待tx.get('/Authors?$ select = name')

//CSN实体输入和流利的查询API
 const response =等待tx.read(Authors).where('ID',1)

//来自流畅查询API的CQN输入
 const cqn = SELECT.from(作者)
 const response =等待tx.run(cqn)

我可以通过以下演示的方式使用.get()吗?

//books-service.js

 const cds = require('@ sap/cds')
 const {Books} = cds.entities('org.sample.book')

 module.exports = cds.service.impl(async(srv)=> {

    srv.on('getInsights',async(req)=> {

       const tx = srv.transaction(req)
       const bookid = req.data.bookid

       返回等待tx.get(`/Books($ {bookid})?$ expand = Authors`)

    })

 })

 

transaction.get()仅可用于外部服务吗? 上面提到的代码返回错误:

 [2020-04-16T10:43:56.834Z | 错误|  1296278]:tx.get不是函数
 [内部错误] TypeError:tx.get不是函数
 

谢谢。

2条回答
奄奄一息的小鱼
2020-08-20 14:16
< p>你好,格雷格,

同意,上述api可用于外部服务。 我想知道它是否可以用于当前服务。

如果您考虑一个简单的示例,例如跟随云样本书店-

 http://localhost:4004/admin/Books?$ expand = author,currency 

为了获得上述查询返回的数据,必须编写一种流利的表达式SELECT.from,格式如下:

 {
   "选择": {
     "来自":{
       "参考":[
         " AdminService.Books"
       ]
     },
     "列": [
       {
         "参考":[
           " createdAt"
         ]
       },
       {
         "参考":[
           "由...制作"
         ]
       },
       {
         "参考":[
           " modifiedAt"
         ]
       },
       {
         "参考":[
           " modifiedBy"
         ]
       },
       {
         "参考":[
           "ID"
         ]
       },
       {
         "参考":[
           "标题"
         ]
       },
       {
         "参考":[
           " descr"
         ]
       },
       {
         "参考":[
           "股票"
         ]
       },
       {
         "参考":[
           "价钱"
         ]
       },
       {
         "参考":[
           " author_ID"
         ]
       },
       {
         "参考":[
           "货币代码"
         ]
       },
       {
         "参考":[
           "作者"
         ],
         "展开":[
           {
             "参考":[
               " createdAt"
             ]
           },
           {
             "参考":[
               "由...制作"
             ]
           },
           {
             "参考":[
               " modifiedAt"
             ]
           },
           {
             "参考":[
               " modifiedBy"
             ]
           },
           {
             "参考":[
               "ID"
             ]
           },
           {
             "参考":[
               "名称"
             ]
           },
           {
             "参考":[
               "出生日期"
             ]
           },
           {
             "参考":[
               "死亡日期"
             ]
           },
           {
             "参考":[
               "出生地"
             ]
           },
           {
             "参考":[
               "死亡地点"
             ]
           }
         ],
         "限制":{
           "行":{
             " val":100
           },
           "偏移":{
             " val":0
           }
         }
       },
       {
         "参考":[
           "货币"
         ],
         "展开":[
           {
             "参考":[
               "名称"
             ]
           },
           {
             "参考":[
               " descr"
             ]
           },
           {
             "参考":[
               "码"
             ]
           },
           {
             "参考":[
               "符号"
             ]
           }
         ],
         "限制":{
           "行":{
             " val":100
           },
           "偏移":{
             " val":0
           }
         }
       }
     ],
     "限制":{
       "行":{
         " val":1000
       }
     }
   }
 } 

我想知道是否可以使用.get(url)路由而不是冗长的SELECT查询来实现相同的效果。 或者,如果可以简化同一查询,使其看起来不那么冗长。 我是从 req.query 属性中获取的。

有什么想法吗?

一周热门 更多>