如何使用 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

等等。