【问题标题】:Sails.js/waterline: groupBy + countSails.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?

【问题讨论】:

    标签: javascript node.js sails.js waterline


    【解决方案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 语句 (stackoverflow.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 仍然无法做到这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-01
      • 2014-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-19
      相关资源
      最近更新 更多