Sails.js/waterline: groupBy + count
Posted
技术标签:
【中文标题】Sails.js/waterline: groupBy + count【英文标题】: 【发布时间】:2015-01-09 05:27:58 【问题描述】:使用sails.js (0.10.5):
我不知道如何使用水线/帆来实现 groupBy/count。我想要的是这样的:
SELECT customer_id, COUNT('') FROM customer_data GROUP BY customer_id;
or
SELECT customer_id, SUM(1) FROM customer_data GROUP BY customer_id;
我无法使用 count 和 sum(使用常量)来实现这一点:
Customer.find( groupBy:['customer_id'], count: true )
or
Customer.find( groupBy:['customer_id'], sum: [1] )
两者都会以错误结束,第一个“缺少计算”和第二个“SQL 语法错误”。
我可以使用 sum 与现有列 (sum: ['id']
) 进行分组,但这并没有让我得到计数。
我是不是用错了 API?
【问题讨论】:
【参考方案1】:请使用Customer.query('SELECT customer_id, SUM(1) FROM customer_data GROUP BY customer_id', function(err,results))
如果你不想使用sql,你可以这样使用
Customer.find(groupBy:'customer_id').exec
参考:waterline-sequel select builder function
【讨论】:
对于迟到的评论感到抱歉:我正在考虑结合生成的 where 语句 (***.com/q/27852766/3045181)。我试图查看这个 where-statement-generation,但我发现它相当复杂(使用 waterline-sequel)。 哦,我明白了,是不稳定的模块:)【参考方案2】:.query()
自 Sails v1.0 起已弃用,而是使用 .getDatastore().sendNativeQuery()
(参考:https://sailsjs.com/documentation/reference/waterline-orm/models/query)。使用 Waterline 仍然无法做到这一点。
【讨论】:
以上是关于Sails.js/waterline: groupBy + count的主要内容,如果未能解决你的问题,请参考以下文章
Sails.js/waterline: groupBy + count
Sails.js Waterline ORM:.findOrCreate() 没有 .populate() 方法
在视图中显示一对多关系sails.js waterline orm的列表