Javascript 在Sails.JS/Waterline中聚合嵌套模型数据
我正在努力将我的业务逻辑放在我的SailsJS项目中 我的数据模型如下:Javascript 在Sails.JS/Waterline中聚合嵌套模型数据,javascript,node.js,sails.js,waterline,Javascript,Node.js,Sails.js,Waterline,我正在努力将我的业务逻辑放在我的SailsJS项目中 我的数据模型如下: Portfolio (hasMany) -> Positions (hasOne) -> Asset-> (hasMany) Ticks 我希望使用父模型上的计算属性聚合子模型的数据,这些属性一直级联到公文包。e、 G资产知道最新的刻度(价格),头寸知道其当前价格(numberShares*资产的最新刻度),等等。理想情况下,我希望将此数据添加到JSON中,以便将业务逻辑从Ember客户端移开 对于一
Portfolio (hasMany) -> Positions (hasOne) -> Asset-> (hasMany) Ticks
我希望使用父模型上的计算属性聚合子模型的数据,这些属性一直级联到公文包。e、 G资产知道最新的刻度(价格),头寸知道其当前价格(numberShares*资产的最新刻度),等等。理想情况下,我希望将此数据添加到JSON中,以便将业务逻辑从Ember客户端移开
对于一个级别来说,这很好,但是如果我尝试使用子级的计算属性,它要么是未定义的,要么是使用toJSON()空的
Asset.js:
这是有效的(在添加检查类型后,取决于它是否被嵌套返回,它是否不起作用)
现在在Position.js中
我想计算currentValue:
currentValue: function () {
return this.assetID.latestTick() * this.numberShares;
},
由于该函数不可用(仅硬编码属性),因此该函数不起作用。我尝试使用Tick.Find()。。。但是遇到了异步问题(在获取数据之前返回JSON)
我试图在JSON中强制嵌入/填充关联,但没有任何区别。一旦我跨越了一个以上的层次,我就不会得到任何数据
我应该/可以在哪里进行此聚合?我不想使用自定义控制器操作,但要利用REST API。Waterline不支持深度填充。如果要实现这样的深度查询,如果使用Sails<1,则可以使用
native
();如果使用Sails>=1,则可以使用manager
()
这样,您就可以使用您的数据库能够构建这种“更高级”查询的任何东西
assetID:{
model: "Asset",
},
currentValue: function () {
return this.assetID.latestTick() * this.numberShares;
},