云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

分布式存储_科迪集团企业邮箱系统_企业级

小七 141 0

数据库服务器_百万亚瑟王数据库_是什么

在本文中,我展示了在CAP中使用计算属性的一种方法,即在CAP中使用cd和服务事件节点.js

在社区问答的CAP部分,Pierre Dominique问了一个有趣的问题,我想我可以试着用简短的帖子来回答。这里有一个问题:计算使用CD的关联实体的数量——继续快速阅读,然后回到这里找出一种方法。

以书店的样本数据为基础,我们如何扩展服务以包括一个属性,该属性表示每个作者写了多少本书?

步骤1–定义

这是基本模式。这与Pierre给出的示例非常相似,但在这个级别上没有额外的"numberOfBooks"属性—我想给自己一个额外的挑战,不在数据模型层定义它,而只在服务定义层定义它。如果我们要有一个计算属性,我们应该避免它污染持久层的空间/架构.cds

可以在服务定义级别向实体添加计算属性。下面是服务定义与手头需求的计算属性的关系:

srv/服务.cds

注意"as select from",而不是更简单的"as projection on"。它允许我们指定属性,这就是我们在下面的块中所做的:

这个"*"将从我的作者定义然后我们将一个新属性"numberOfBooks"定义为整数类型

让我们花点时间看看它产生了什么。在命令行运行:

…给出了模式定义,其中包括从服务级别定义的两个实体生成的两个视图:

注意"CatalogService\u Authors"视图中的"numberOfBooks"属性。

当我们想查看生成的编译时,让我们做同样的操作,但是这次看看服务定义是什么样子的,以实体数据模型XML(EDMX)的形式—您和我都更熟悉OData元数据。

在命令行运行:

…给了我们:

其中有一个特别有趣的东西—这个新属性的注释。您可以一直盯着这个XML看,直到看到它为止,或者只看它是从尖括号中提取出来的:

这是从前面的简单服务定义中自动生成的。谢谢,队长!

步骤2–下一步是实现

实现逻辑以提供此计算属性的值。如您所知,大数据下载,我们可以在处理OData操作时,以附加到请求/响应生命周期中特定事件的函数的形式提供定制逻辑,并以一种非常舒适的方式,通过"约定优先于配置"的方法,简单地提供与服务定义文件具有相同基名称的JavaScript文件,在同一个目录中节点.jsCAP运行时将发现这个文件并将其用作额外(或重写)实现逻辑。这就是它的样子:

srv/服务.js

(如果你想知道:是的,我尽量避免分号和双引号,是的,我喜欢ES6的胖箭头语法的功能风格,没有,大淘客cms,我不是在写,淘客论坛,也不会在这里写任何基于"类"的代码——在我看来,整个"面向对象的JS"完全是错误的方向。把它插进你的烟斗里抽!:-)

不管怎样,代码是这样的:

我们从服务对象中获取Books实体在Authors实体上处理读取请求时,特别是在完成请求的主要部分之后(即使用srv.之后)该函数期望请求实现的结果(即检索到的作者)加上原始请求对象,我们可以从中创建一个上下文来运行CDS查询该查询位于检索到的作者的映射函数中,用于获取该作者的书籍

CDS查询是使用CDS查询语言(CQL)fluent API进行的,我尝试用一些免费的空格(before.from和.where)来说明这一点,物联网大会,特别是)。

一旦计算并分配了"numberOfBooks"的值,我们只需"放手",增强的结果集就会在响应中返回。

步骤3–利润!

这是在部署了定义并启动了服务(我在一些示例CSV文件中有一些书籍和作者)之后产生的结果:

这是一些示例输出,淘客购物,用"curl"检索并用"jq"漂亮地打印出来(是的,伙计们,这都在终端中,在命令行上)*:

这几乎就是它的全部,至少在我看来是这样。我希望你觉得这个有用。我写得很开心,谢谢皮埃尔提出了一个好问题