我的模型DummyModel
具有attOne
,attTwo
和attThree
属性。
要获取attOne
的所有实例,可以使用 -
DummyModel.find({where: {attTwo: 'someValue'}, fields: {attOne: true} });
上述查询或多或少与MySQL
查询 -
select attOne from DummyModel where attTwo = 'someValue'
但是,我需要找到从上面的查询返回的所有attOne值的总和。也就是说,MySQL相当于 -
select sum(attOne) from DummyModel where attTwo = 'someValue'
我读到环回并不支持聚合功能(即groupby
)。但有没有办法获得sum(attOne)
?
我知道一种方法是获取对象,然后遍历所有实例并添加它。
我想知道的是,是否有任何预先存在的环回方法也可以这样做。
答案 0 :(得分:1)
假设这段代码
f = DummyModel.find({where: {attTwo: 'someValue'}, fields: {attOne: true} });
返回一个这样的数组
[
{attTwo: 'someValue' ,attOne: 1}
{attTwo: 'otherValue',attOne: 1}
]
您可以使用reduce function将函数应用于所有元素
var sum = f.reduce(function(last, d) {return d.attOne + last},0);
这是工作代码
DummyModel = {
find: function(a) {
return [{
attTwo: 'someValue',
attOne: 1
}, {
attTwo: 'otherValue',
attOne: 2
}];
}
}
f = DummyModel.find({
where: {
attTwo: 'someValue'
},
fields: {
attOne: true
}
});
sum = f.reduce(function(last, d) {
return d.attOne + last;
}, 0);
alert(sum);