CAP:部署到CF和HANA时的行为不同

2020-08-18 08:14发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好,我想分享在将CAP(No...

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

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


大家好,
我想分享在将CAP(NodeJs)应用程序部署到Cloud Foundry时发生的事情。
这段代码:

//*获取访问请求:
         const obj = req.data;
         const db =等待cds.connect.to('db');
         const {UserInfo,AccessRequest} = db.entities;  <--- CF中的此行失败

        //*检查这一天是否已经有访问请求:
         const accessRequests =等待
              SELECT.from(AccessRequest)
                    .where({accessDate:moment()。format(" YYYY-MM-DD")})
                    .and({启动器ID:req.user.id})
                    .and({locationFloor_ID:obj.locationFloor_ID}); 

这在使用sqlite进行本地测试时效果很好。
通过反射,实例化UserInfo和AccessRequest变量不会引起麻烦。

在Cloud Foundry中时,反射不起作用,因此UserInfo和AccessRequest保持"未定义",并且下一个SELECT失败。

这是我发现的解决方法:

//*获取访问请求:
         const obj = req.data;
         const db =等待cds.connect.to('db');
         const {UserInfo,AccessRequest} = db.entities('my.inbox.db');  <-此工作

        //*检查这一天是否已经有访问请求:
         const accessRequests =等待
              SELECT.from(AccessRequest)
                    .where({accessDate:moment()。format(" YYYY-MM-DD")})
                    .and({启动器ID:req.user.id})
                    .and({locationFloor_ID:obj.locationFloor_ID}); 

所以我只是将数据库模型名称空间传递给实体函数。

怎么样? 为什么使用sqlite在没有命名空间的情况下可以工作,而在HANA中却不能工作?
无论我们在哪种环境下工作,都应该完全一样吗?

在这种情况下,CAP文档中的示例非常混乱,所以我很困惑。

有任何提示吗?

最好,
罗伯托。