如何按 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
我搜索了很多有关按投票总和排序元素的信息(在另一个模型中),就像我在 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