由于通用服务提供者涵盖大多数标准任务和用例,因此大大减少和缩小了添加服务实施代码的需求。
其余情况将减少到特定于域和应用程序的实际自定义逻辑,例如域特定的编程验证。
例如,让我们编写一个验证,以确保通过 AdminService 创建新作者时,出生日期早于经过的死亡日期。
添加自定义服务实现的最简单方法是将同名的 .js 文件放在包含相应服务定义的 .cds 文件旁。例如,在我们的案例中,我们将名为 admin-service.js 的文件放入项目的 srv 文件夹中,因为此文件夹还包含文件 admin-service.cds,用于定义管理服务(请参阅下图)。

注意
有多种方法可以在 .js 文件中实施所需的自定义逻辑。最常见的方法是使用 cds.ApplicationService 的子类从通用的开箱即用实施中受益。这是因为 cds.ApplicationService 类是缺省服务提供者实施,它将已讨论的通用提供者添加到服务定义中。
要创建 cds.ApplicationService 的子类,我们首先将 @sap/cds 模块分配到代码中的常量 cds(第 1 行)。@sap/cds 模块是 cds 外观对象,提供对所有 CAP Node.js API 的访问。
然后,我们在行 4 到 6 中创建 cds.ApplicationService 的子类,稍后我们将在其中实施自定义逻辑。子类的名称是任意的。我们在这里将其称为服务接口,即管理服务。
在第 9 行中,我们使 AdminService 类可用于导入到其他模块。这是 Node.js 中用于构建代码的常见做法。
注意
如果现在通过在终端中输入 cds watch 来启动应用程序,则添加的服务实施文件将通过类似于以下内容的输出显示在日志中:
1[cds] - serving AdminService { path: '/admin', impl: 'srv/admin-service.js' }


