点击此处---> 群内免费提供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文档中的示例非常混乱,所以我很困惑。
有任何提示吗?
最好,
罗伯托。
您好 Roberto Pagni ,
没有看到完整的模型和代码,我无法给出完整的解释。 但是,从您共享的内容来看,您的"解决方法"看起来像是使用db.entities的正确方法。 您需要传递名称空间,因为诸如" UserInfo"之类的实体名称对于数据库而言可能不是唯一的(与服务范围相反,在给定服务具有UserInfo的情况下," const {UserInfo} = srv.entities"的工作范围为 当然。)
最好,
塞巴斯蒂安
似乎与 https://github.com/SAP-samples/cloud-cap-samples/issues/53#issuecomment-621539635 →请订阅此处以跟踪进度 。
我有种感觉,您刚刚为此发布了.. kudo的帖子,就救了我半天的挫败感:-)
我能够通过在cds.requires.db部分添加:
来使用sqlite解决本地运行的问题。 在package.json
一周热门 更多>