禁用默认的CRUD处理程序

2020-08-19 00:32发布

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

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


是否可以为定义的实体禁用默认的CRUD处理程序? 虽然我可以通过实现相应的 .on('CREATE',...) .on('READ',...)处理程序来定义自定义功能, 这些处理程序除隐含默认值之外,还被执行 而不是代替隐含的默认值。

我想实现一个端点 /data/Json ,通过该端点可以接收任意json负载。 为此,我试图通过 @ cds.persistence.skip 在我的服务模型中声明一个非持久性实体,然后根据我的需要设计了它的CREATE处理程序。

//srv/service.cds
 服务数据@(path:'/data'){
     @ cds.persistence.skip
     实体Json {
         密钥ID:UUID;
         json:字符串;
     }
 }

//srv/service.js
 module.exports =异步(srv)=> {
     srv.on('CREATE','Json',(req)=> {
       /*
          *在这里使用req.data.json中的数据
          */
     })
 }
 

不幸的是,由于 SQLITE_ERROR,任何尝试将数据发布到端点的尝试都失败了:没有这样的表:Data_Json ,我从中推断出POST导致尝试将数据实际写入数据库, 这是默认行为。 是否可以为我的实体完全禁用默认处理程序?

谢谢您的问候。

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

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


是否可以为定义的实体禁用默认的CRUD处理程序? 虽然我可以通过实现相应的 .on('CREATE',...) .on('READ',...)处理程序来定义自定义功能, 这些处理程序除隐含默认值之外,还被执行 而不是代替隐含的默认值。

我想实现一个端点 /data/Json ,通过该端点可以接收任意json负载。 为此,我试图通过 @ cds.persistence.skip 在我的服务模型中声明一个非持久性实体,然后根据我的需要设计了它的CREATE处理程序。

//srv/service.cds
 服务数据@(path:'/data'){
     @ cds.persistence.skip
     实体Json {
         密钥ID:UUID;
         json:字符串;
     }
 }

//srv/service.js
 module.exports =异步(srv)=> {
     srv.on('CREATE','Json',(req)=> {
       /*
          *在这里使用req.data.json中的数据
          */
     })
 }
 

不幸的是,由于 SQLITE_ERROR,任何尝试将数据发布到端点的尝试都失败了:没有这样的表:Data_Json ,我从中推断出POST导致尝试将数据实际写入数据库, 这是默认行为。 是否可以为我的实体完全禁用默认处理程序?

谢谢您的问候。

付费偷看设置
发送
2条回答
me_for_i
1楼 · 2020-08-19 00:59.采纳回答

您好 StanislawHüll

与相应请求有关的所有处理程序均按顺序执行,默认设置最后执行。 这使您可以顺从它们,例如,如果您根本不想处理该请求。 但是,这意味着您需要终止执行,例如通过调用req.reply(),req.reject()等来终止。完整列表可在此处找到:https://cap.cloud.sap/docs/node.js/api#service-on (请参阅部分 "结果")。

最好,
塞巴斯蒂安

粗暴的香蕉
2楼-- · 2020-08-19 01:09

您好斯坦尼斯拉夫·胡尔

  1. OData要求每个实体都具有键属性(如果要通过OData公开该实体,@ nokey不适用)。 因此,您可以添加(虚拟)一个密钥,也可以简单地将"数据"作为密钥,即"密钥数据:字符串;"
  2. " req.reply('OK')"将不起作用,因为OData协议指定返回创建的实体。 因此,它必须是req.reply({data:})"

最佳,
塞巴斯蒂安

一周热门 更多>