如何使用 knex.js 重置查询部分
How do I reset query part with knex.js
我试图在 documentation 中找到任何东西,但没有成功。
我想做的是克隆我的查询生成器并重置一些查询部分,如排序依据或分组依据。我该怎么做?
这个查询部分好像没有多少可用的方法
并且只有针对选择和条件的明确方法。
你是怎么做到的?
示例:
const qb = knex
.select('id')
.from('table')
.where({ visibility: 'public' })
// some left joins here
.groupBy('id')
那我该怎么做
const new_qb = qb
.clone()
// remove group by here
.clearSelect()
.count()
您可以克隆查询并将部分添加到这些单独的查询中。
像这样:
//base query
let query = knex('table_name').where({id: 1});
const countQuery = query.clone().count();
const selectQuery = query.clone().select().limit(10).offset(0);
return Promise.all([countQuery, selectQuery]);
要重置查询部分,有一种方法,例如:
this.qb._clearGrouping('order'); // reset order by
this.qb._clearGrouping('group'); // reset group by
等等。
我试图在 documentation 中找到任何东西,但没有成功。
我想做的是克隆我的查询生成器并重置一些查询部分,如排序依据或分组依据。我该怎么做?
这个查询部分好像没有多少可用的方法
并且只有针对选择和条件的明确方法。 你是怎么做到的?
示例:
const qb = knex
.select('id')
.from('table')
.where({ visibility: 'public' })
// some left joins here
.groupBy('id')
那我该怎么做
const new_qb = qb
.clone()
// remove group by here
.clearSelect()
.count()
您可以克隆查询并将部分添加到这些单独的查询中。
像这样:
//base query
let query = knex('table_name').where({id: 1});
const countQuery = query.clone().count();
const selectQuery = query.clone().select().limit(10).offset(0);
return Promise.all([countQuery, selectQuery]);
要重置查询部分,有一种方法,例如:
this.qb._clearGrouping('order'); // reset order by
this.qb._clearGrouping('group'); // reset group by
等等。