javascript - Node sequelize 按多列排序

标签 javascript node.js sequelize.js

来自 Ruby/Rails 背景,我习惯了这种类型的语法:

Model.all.order('col1 + col2 + col3')

因此,假设 col1、col2 和 col3 是整数,例如,它将根据这 3 列的总和对结果进行排序。

是否有类似的方法使用 sequelize 进行排序?

最佳答案

使用最新的 master(不确定更改是否已推送到 npm),您可以执行以下操作:

Model.findAll({ order: [[{ raw: 'col1 + col2 + col3 DESC' }]]});

导致

ORDER BY col1 + col2 + col3 DESC

或者你可以这样做:

Model.findAll({ order: [[sequelize.fn('SUM', sequelize.col('col1'), sequelize.col('col2'), sequelize.col('col3')), 'DESC']]});

导致

ORDER BY SUM(`col1`, `col2`, `col3`) DESC

我会推荐第二个版本,它将正确转义列名。有关详细信息,请参阅 http://sequelizejs.com/documentation#models-finders-limit---offset---order---group

关于javascript - Node sequelize 按多列排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19461500/

相关文章:

node.js - NodeJS在声明Sequelize 6多对多关联模型时相互导入文件

node.js - 无服务器 lambda - 函数未完全执行

javascript - Vue.js 工作流程(从 Vue.js 1 到 2)

javascript - Node 计划不适用于express.js

node.js - 如何修复 "Response to preflight request doesn' t 通过访问控制检查 : It does not have HTTP ok status"error in react app with nodejs api

node.js - Node 后续跟随/跟随关系

sql - 使用 Through 序列化多对多关系不会插入附加属性

javascript - 我可以在 Node 中使用 "static methods"增加对象、函数、日期等吗?

javascript - Redux 表单操作未定义

javascript - 在这种情况下 eval() 是邪恶的吗?