Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Sails.JS/Waterline中聚合嵌套模型数据_Javascript_Node.js_Sails.js_Waterline - Fatal编程技术网

Javascript 在Sails.JS/Waterline中聚合嵌套模型数据

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客户端移开 对于一

我正在努力将我的业务逻辑放在我的SailsJS项目中

我的数据模型如下:

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;

    },