如何按 sails.js 上关系字段的总和排序?

How to sort by sum of field of a relation on sails.js?

我搜索了很多有关按投票总和排序元素的信息(在另一个模型中),就像我在 SQL 中所做的那样:

SELECT item.* FROM item
LEFT JOIN (
  SELECT 
    vote.item,
    SUM(vote.value) AS vote.rating
  FROM vote
  GROUP BY vote.item
) AS res ON item.id = vote.item
ORDER BY res.rating DESC

有没有办法通过水线法做到这一点?

我认为你不能用简单的水线方法进行左连接,但你可以使用 .query 方法来执行你的原始 SQL 语法。

Sails MySQL 适配器使 sum('field')sort('field') 发生冲突。它将生成 SQL 查询,例如:

SELECT SUM(table.field) AS field FROM table ORDER BY table.field;

但我想要:

SELECT SUM(table.field) AS field FROM table ORDER BY field;

等同于:

SELECT SUM(table.field) AS f FROM table ORDER BY f;

我的解决方案是使用 lodash.sortBy() 来处理结果。 https://lodash.com/docs/4.16.4#sortBy