点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
死人专家
我已将CAP项目部署到CF(试用版)。 UI,服务模块,DB似乎正常工作。 我可以访问要获取数据的API。 到目前为止,一切都很好。
但是,每当我的自定义处理程序之一访问CDS事务时,都会出现以下错误:
在运行cds.transaction的行上"预期查询目标,但未定义" 。 示例:
2020-03-25T17:47:36.06 + 0100 [APP/PROC/WEB/0] OUT错误:预期为查询目标,但未定义 2020-03-25T17:47:36.06 + 0100 Function.factory的[APP/PROC/WEB/0] OUT [自](/home/vcap/app/node_modules/@ sap/cds/lib/ql/index。 js:44:26) 2020-03-25T17:47:36.06 + 0100 [APP/PROC/WEB/0]在SELECT_ood_from(/home/vcap/app/node_modules/@sap/cds/lib/ql/index.js:99:30)处输出 2020-03-25T17:47:36.06 + 0100 [APP/PROC/WEB/0]在Function.Object.assign._ [作为一体](/home/vcap/app/node_modules/@ sap/cds/lib/ql/index.js:103:68) 2020-03-25T17:47:36.06 + 0100 [APP/PROC/WEB/0]在Object.on上以[作为处理程序]输出(/home/vcap/app/srv/license-service.js:59:28) 2020-03-25T17:47:36.06 + 0100 [APP/PROC/WEB/0]在下一个(/home/vcap/app/node_modules/@sap/cds-services/lib/services/hooks/On.js: 185:37) 2020-03-25T17:47:36.06 + 0100 [APP/PROC/WEB/0]在On._middleware(/home/vcap/app/node_modules/@ sap/cds-services/lib/services/hooks/On。 js:214:5) 2020-03-25T17:47:36.06 + 0100 [APP/PROC/WEB/0]在Promise(/home/vcap/app/node_modules/@sap/cds-services/lib/services/hooks/On.js: 84:12) 2020-03-25T17:47:36.06 + 0100 [APP/PROC/WEB/0]在新的Promise中退出() 2020-03-25T17:47:36.06 + 0100 [APP/PROC/WEB/0]在On.executeHandlerIfListed(/home/vcap/app/node_modules/@ sap/cds-services/lib/services/hooks/On。 js:83:12) 2020-03-25T17:47:36.06 + 0100 [APP/PROC/WEB/0]在ApplicationService._actionsFunctionsHandlers(/home/vcap/app/node_modules/@sap/cds-services/lib/services/Service.js: 599:72) 2020-03-25T17:47:36.06 + 0100 [APP/PROC/WEB/0]错误[2020-03-25T16:47:36.060Z | 错误| 1094159]:无法回滚:找不到客户端
示例处理程序:
this.before('CREATE','Licenses',async(req)=> { /** *域模型尚无UNIQUE注释,因此此处理程序可以防止 *与要创建的许可证ID相同的许可证 * */ const license =等待cds.transaction(req).run( SELECT.one().from(许可证).where({license_ID:req.data.license_ID}) ) if(license!= null){ req.reject(409,`ID为$ {req.data.license_ID}的许可证已经存在`); } })
不访问cds.transaction的处理程序可以正常工作。 同一项目在本地运行良好。 我现在看到了MTA部署问题。 我的mta.yaml:
#######基于模板版本0.2.0生成的mta.yaml ####### appName = maikeyserver ####### language = nodejs; multiTenant = ####### approuter = _schema-version:'3.1' ID:maikeyserver 版本:1.0.0 描述:"许可证密钥管理服务" 构建参数: 之前: -建设者:自定义 命令: -npm安装 -CD建立/全部 参数: 启用并行部署:true 模块: -名称:maikeyserver-ui 类型:nodejs 路径:应用 参数: 记忆体:256M 磁盘配额:256M 要求: -名称:srv-binding 组:目的地 特性: forwardAuthToken:true strictSSL:true 名称:srv-binding 网址:〜{srv-url} -名称:maikeyserver-uaa -名称:maikeyserver-srv 类型:nodejs 路径:gen/srv 特性: 退出:1#由deploy.js任务终止 要求: -名称:maikeyserver-db-hdi-container -名称:maikeyserver-uaa 提供: -名称:CAP服务使用者(例如approuter)所需的srv-binding# 特性: srv-url:$ {default-url} -名称:maikeyserver-db 类型:hdb 路径:db 参数: 应用名称:maikeyserver-db 要求: -名称:maikeyserver-db-hdi-container 资源: -名称:maikeyserver-db-hdi-container 类型:com.sap.xs.hdi-container 参数: 服务:尿 特性: hdi-service-name:$ {service-name} -名称:maikeyserver-uaa 参数: 服务:xsuaa 路径:xs-security.json 类型:com.sap.xs.uaa
1。 有人知道为什么我的处理程序中会在CF上收到此异常吗?
2。 应用程序的hdb模块是否应该正在运行? 当我部署mtar时,数据库模块似乎执行了部署步骤,其余的都停止了。
3。 在我的服务模块上,我必须将路径从简单的path:srv更改为path:gen/srv。 后者给我一个错误"在....处找不到*的CDS模型"。 我通过反复试验进行了更多更改,但不确定为什么现在可以使用。 谁能解释服务模块上的路径应该是什么?
干杯,曼努埃尔
嗨,
这很容易解决,请更换
使用
提示:要使用查询API,您只需启动CDS REPL:
最好的问候,
大卫
嗨大卫,
谢谢,成功了。
我有点困惑为什么带one()的版本在本地(在SQLite之上)工作。 这里的服务层是否根据基础数据库做出不同的反应?
最诚挚的问候,
Manuel
一周热门 更多>