首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Knex.js多个orderBy()列

Knex.js多个orderBy()列
EN

Stack Overflow用户
提问于 2016-04-01 10:22:08
回答 5查看 38.3K关注 0票数 34

可以做多个orderBy()列吗?

代码语言:javascript
复制
knex
  .select()
  .table('products')
  .orderBy('id', 'asc')

orderBy() chainable只接受一个列键和一个排序值,但是我如何按多列排序呢?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-04-03 19:34:08

您可以通过 multiple times按多列进行排序:

代码语言:javascript
复制
knex
  .select()
  .table('products')
  .orderBy('name', 'desc')
  .orderBy('id', 'asc')
票数 56
EN

Stack Overflow用户

发布于 2016-04-04 13:21:00

最初的答案在技术上是正确的,也是有用的,但我的意图是找到一种多次编程应用orderBy()函数的方法,下面是我参考的实际解决方案:

代码语言:javascript
复制
var sortArray = [
  {'field': 'title', 'direction': 'asc'}, 
  {'field': 'id', 'direction': 'desc'}
];

knex
  .select()
  .table('products')
  .modify(function(queryBuilder) {
    _.each(sortArray, function(sort) {
      queryBuilder.orderBy(sort.field, sort.direction);
    });
  })

Knex提供了一个修改功能,允许直接对queryBuilder进行操作。然后数组迭代器多次调用orderBy()

票数 20
EN

Stack Overflow用户

发布于 2020-06-30 12:50:33

Knex orderBy函数还接收一个数组:

代码语言:javascript
复制
knex('users').orderBy(['email', 'age', 'name'])

代码语言:javascript
复制
knex('users').orderBy(['email', { column: 'age', order: 'desc' }])

代码语言:javascript
复制
knex('users').orderBy([{ column: 'email' }, { column: 'age', order: 'desc' }])
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36353837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档