点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好,
是否应该可以在更新前处理程序中操纵要编辑的实体的数据?
这在before create处理程序中是可能的,但是在before update处理程序中,只有请求的数据被写入数据库,而不是被操纵的数据。
我使用SAP Bookshop示例进行测试。
admin-handler.js
const cds = require('@ sap/cds') /** CatalogService的服务实现*/ module.exports = cds.service.impl(function(){ this.before(['CREATE','UPDATE'],'Books,function(req){ console.log("已叫书"); if(req.data &&!req.data.descr){ req.data.descr ="这是一本新书|" + Math.random(); } }) })
发布请求:
URL:http://localhost:4004/admin/Books
正文:
{ " ID":200, 标题:新书 }
响应正文:
{ " @ odata.context":" $ metadata#Books/$ entity", " @ odata.metadataEtag":" W/\" EoCBnqCB08VV3GUetvB3Qy4peJ4emew + aJvvSBWdL/Q = \"", " modifiedAt":null, " createdAt":" 2020-02-06T09:35:53.781Z", " createdBy":"匿名", " modifiedBy":null, " ID":200, " title":" New Book", " descr":"这是一本新书| 0.9661820701464914", "股票":空, "价格":空, " author_ID":null, " currency_code":null }
放置请求:
URL:http://localhost:4004/admin/Books(200)
身体:
{ " title":" New Book New Title" }
响应正文:
{ " @ odata.context":" $ metadata#Books/$ entity", " @ odata.metadataEtag":" W/\" EoCBnqCB08VV3GUetvB3Qy4peJ4emew + aJvvSBWdL/Q = \"", " modifiedAt":" 2020-02-06T09:44:46.008Z", " createdAt":" 2020-02-06T09:35:53Z", " createdBy":"匿名", " modifiedBy":"匿名", " ID":200, " title":" New Book New Title", " descr":"这是一本新书| 0.11440685991497701", "股票":空, "价格":空, " author_ID":null, " currency_code":null }
放置请求将为书籍描述返回一个新的Math.random()值,但是如果您对Books(200)发出GET请求,则书籍描述将为" This is a new Book | 0.9661820701464914",即 与创建请求后的值相同。 因此,新的Math.random()值不会持久保存到数据库中。
获取请求:
URL:http://localhost:4004/admin/Books(200)
响应正文:
{ " @ odata.context":" $ metadata#Books/$ entity", " @ odata.metadataEtag":" W/\" EoCBnqCB08VV3GUetvB3Qy4peJ4emew + aJvvSBWdL/Q = \"", " modifiedAt":" 2020-02-06T09:44:46Z", " createdAt":" 2020-02-06T09:35:53Z", " createdBy":"匿名", " modifiedBy":"匿名", " ID":200, " title":" New Book New Title", " descr":"这是一本新书| 0.9661820701464914", "股票":空, "价格":空, " author_ID":null, " currency_code":null }
包含我的示例的Git存储库:
https://github.com/HeneryHawk/cap-test-handler
最好的问候
Simon
西蒙,尼尔,
是的,这应该可行,我们已经知道了这个问题。 目前,您可以修改" req.query.cqn.data"(仅在更新过程中!)。 抱歉给您带来不便。
最好,
塞巴斯蒂安
嗨,尼尔,
该示例基于SQLite数据库,但实际上我注意到基于 HANA DB。
关于
西蒙
嗨西蒙
这是否发生在SQLite或HANA中? 我已经成功地使用before处理程序来更改数据,然后再在HANA数据库中进行更新。 想知道它是否仅是SQLite问题?
致谢
尼尔
一周热门 更多>