Saltar al contenido

Knex.js múltiples columnas orderBy ()

Si te encuentras con algún detalle que no entiendes puedes dejarlo en la sección de comentarios y te ayudaremos rápidamente.

Solución:

Puedes llamar .orderBy varias veces para ordenar por varias columnas:

knex
  .select()
  .table('products')
  .orderBy('name', 'desc')
  .orderBy('id', 'asc')

La respuesta original es técnicamente correcta y útil, pero mi intención era encontrar una manera de aplicar programáticamente el orderBy() función varias veces, aquí está la solución real con la que fui como referencia:

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 ofrece una función de modificación que permite operar directamente en queryBuilder. Un array el iterador luego llama orderBy() varias veces.

La función orderBy de Knex también recibe un array:

knex('users').orderBy(['email', 'age', 'name'])

o

knex('users').orderBy(['email',  column: 'age', order: 'desc' ])

o

knex('users').orderBy([ column: 'email' ,  column: 'age', order: 'desc' ])

Si posees alguna indecisión o forma de acrecentar nuestro crónica puedes dejar un exégesis y con deseo lo analizaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *