SAP CAP逻辑删除Node.js实现

2020-08-14 06:28发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好。 我有一个要求,而不是...

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

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


大家好。

我有一个要求,而不是删除一条记录,而是将一个状态设置为一个特定的值(不活动),因此我试图在on DELETE之前使用实现一个自定义逻辑。 我已经尝试执行以下更新,但是执行了标准的DELETE,并且从数据库中删除了记录。

 this.on('DELETE','FaultReason',req => {
     const tx = this.transaction(req)
     tx.run(UPDATE(FaultReason).set({changeType:'D',status:'I'})
     .where({ID:req.data.ID}))
   })

我尝试包含req.reply()来停止更新后的流程,但更新未反映在数据库上。

 this.on('DELETE','FaultReason',req => {
     const tx = this.transaction(req)
     tx.run(UPDATE(FaultReason).set({changeType:'D',status:'I'})
     .where({ID:req.data.ID}))
     req.reply()
   })

在事件发生之前,我也尝试过使用相同的代码,结果也相同。

对于Java,我已经看到有一种方式可以说一个操作已完成并停止下一个动作(context.setCompleted()),但是我没有看到与node.js类似的东西。 防止下一步发生的唯一记录方法是抛出异常或使用拒绝。

我可以错过有关node.js API的观点吗?

我知道我可以实现(已经完成)用于停用的动作,但是使用DELETE动词会很好。

最好的问候

4条回答
宇峰Kouji
2020-08-14 06:48

嗨,乔德尔。 当我尝试异步时,响应中出现了类似的错误:

 {
     "错误":{
         " code":" 501",
         " message":"服务器不支持满足请求所需的功能"
     }
 }
 

在日志上,我有一个堆栈跟踪,说没有UPDATE的句柄

删除/api/portal/FaultReason(4f181c3a-d135-4844-bbf9-c29ac74cc1af)
 错误:没有为UPDATE后端注册任何处理程序。
 在Object.module.exports [作为处理程序](/home/vcap/app/node_modules/@sap/cds-runtime/lib/cds-services/services/handlers/finalOn.js:5:13)
 在下一个(/home/vcap/app/node_modules/@sap/cds-runtime/lib/cds-services/services/hooks/On.js:171:37)
 在On._middleware(/home/vcap/app/node_modules/@sap/cds-runtime/lib/cds-services/services/hooks/On.js:200:5)
 在/home/vcap/app/node_modules/@sap/cds-runtime/lib/cds-services/services/hooks/On.js:85:12
 在新的Promise中()
 在On.executeHandlerIfListed(/home/vcap/app/node_modules/@sap/cds-runtime/lib/cds-services/services/hooks/On.js:84:12)
 在ApplicationService._actionsFunctionsHandlers(/home/vcap/app/node_modules/@sap/cds-runtime/lib/cds-services/services/Service.js:646:72)
 在processTicksAndRejections(内部/进程/task_queues.js:97:5)
 在异步ApplicationService.processEvent(/home/vcap/app/node_modules/@sap/cds-runtime/lib/cds-services/services/Service.js:621:9)
 在异步Object.handler(/home/vcap/app/portal-service.js:16:5){
 查询:{更新:{
 实体:" backend.FaultReason",
 其中:{changeType:{val:'D'},状态:{val:'X'}},
 其中:[
 {ref:['ID']},
 '=',
 {val:'4f181c3a-d135-4844-bbf9-c29ac74cc1af'}
 ]
 }},
 事件:" UPDATE",
 目标:" backend.FaultReason"
 }
 [2020-07-20T16:14:03.315Z | 错误|  1453907]:服务器不支持满足请求所需的功能
 [2020-07-20T16:14:03.315Z | 错误|  1453907]:错误堆栈跟踪:错误:服务器不支持在_getErrorObject(/home/vcap/app/node_modules/@sap/cds-runtime/lib/cds-services/util/getError.js  :61:12)在Object.module.exports处的getError(/home/vcap/app/node_modules/@sap/cds-runtime/lib/cds-services/util/getError.js:79:17)[作为处理程序]  (/home/vcap/app/node_modules/@sap/cds-runtime/lib/cds-services/services/handlers/finalOn.js:10:49)在下一个(/home/vcap/app/node_modules/@ sap/在On._middleware(/home/vcap/app/node_modules/@ sap/cds-runtime/lib/cds-services/services)上的cds-runtime/lib/cds-services/services/hooks/On.js:171:37) /hooks/On.js:200:5)位于/home/vcap/app/node_modules/@sap/cds-runtime/lib/cds-services/services/hooks/On.js:85:12,位于新Promise(< 在ApplicationService._actionsFunctionsHandlers(/home/)的On.executeHandlerIfListed(/home/vcap/app/node_modules/@sap/cds-runtime/lib/cds-services/services/hooks/On.js:84:12)  vcap/app/node_modules/@ sap/cds-runtime/l  ib/cds-services/services/Service.js:646:72)位于processTicksAndRejections(内部/process/task_queues.js:97:5)

我将尝试理解这是什么意思,我尝试为UPDATE添加处理程序,但出现了相同的消息。

最诚挚的问候

一周热门 更多>