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)