CAP-如何将req上下文传递给另一个服务中的函数?

2020-08-18 05:53发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)你好 在我的CAP项目中,我定...

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

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


你好

在我的CAP项目中,我定义了多个服务,例如 用户服务和帐户服务,如下所述。
如何将 req 上下文从帐户服务中的功能传递给用户服务中的功能?

根据下面的示例代码,可以预期的是,如果我调用函数/accounts/generateMessages(),则
它应该返回 Hello john-今天没有消息。 ,但它当前返回匿名您好-今日无消息。

问题–如何将req上下文传递给UsersService? CDS中有没有办法绑定类似于.transaction(context)的上下文?

我不想像参数一样将用户上下文传递给函数。

示例代码: https://github.com/ git-ashish/cap-service-context
运行时,输入 john 作为用户名。

users-service.cds

 service UsersService {

     函数getGreeting(msg:String)返回String;

 }
 

users-service.js

 const cds = require('@ sap/cds')

 module.exports = cds.service.impl(async function(){
  
     this.on('getGreeting',async(req)=> {
        
         const {user} = req
         const {msg} = req.data

         返回`$ {msg} $ {user.id}`
     })

 })
 
accounts-service.cds
 service AccountsService {

     函数generateMessages()返回字符串;

 } 

accounts-service.js

 const cds = require('@ sap/cds')

 module.exports = cds.service.impl(异步函数(){
    
     const UsersService =等待cds.connect.to('UsersService')

     this.on('generateMessages',async(req)=> {
         const {user} = req
         
//如何将req上下文绑定到UsersService?
//UsersService.transaction(req)不起作用 const sGreeting =等待UsersService.getGreeting('Hello') 返回`$ {sGreeting}-今天没有消息。 }) })

谢谢!