ORDA:使用EntitySelection.toCollection()时如何指定字段顺序?

背景

我正在将旧的4D数据库代码转换为使用v17中引入的新orda概念。但是,我注意到了一个奇怪的地方。当我有一个使用ds[$vtTableName].query()创建的entitySelection并将该EntitySelection转换为一个集合(使用.toCollection()时,将不遵守我指定的字段顺序。>

示例代码:

C_OBJECT($voSelection)
$voSelection:=ds.Users.query("active = 'True'")

C_COLLECTION($vcUsers)
$vcUsers:=$voSelection.toCollection("FirstName,LastName,DTLastSignin")

预期产量

我希望$vcUsers是对象的集合,并且每个对象看起来像:

{ "FirstName" : "John","LastName" : "Smith","DTLastSignin" : "2019-10-12T32:23:00" }

实际输出

相反,我得到了不同的订单:

{ "DTLastSignin" : "2019-10-12T32:23:00","FirstName" : "John","LastName" : "Smith" }

这破坏了我的一些API使用者,因为他们希望能够指定旧顺序(Selection to JSON)尊重的字段顺序。但是,toCollection()似乎没有。

我找不到有关现场订单的任何文档,甚至可以找到。 official documentation显示了遵守顺序的字段,但这也许只是一个巧合。

plokmn0987 回答:ORDA:使用EntitySelection.toCollection()时如何指定字段顺序?

对此的答案是您不能这样做,因为toCollection()字段列表只是一个过滤器。在幕后,该实体的属性按其自然顺序循环遍历,并且无论该字段是否为指定的过滤器字段之一都被过滤。

这就是.toCollection比经典Selection to JSON方法快的原因。

一种可能的解决方法是使用.map()函数。但是,这可能会降低性能。我尚未进行任何分析,所以不确定。

本文链接:https://www.f2er.com/2345349.html

大家都在问