如何使用knex.js重置查询部分

时间:2018-03-12 05:18:58

标签: node.js knex.js

我试图在This not-yet-accepted pull request找到任何内容但没有成功。

我想要做的是克隆我的查询构建器并重置一些查询部分,如order by或group by。我怎么能这样做?

看起来这个查询部分没有很多可用的方法

documentation

并且有明确的方法仅适用于选择和条件。 你是怎么做到的?

示例:

const new_qb = qb
  .clone()
  // remove group by here
  .clearSelect()
  .count()

我该怎么做呢?

 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script type="text/javascript" src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" />
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.12.2/js/bootstrap-select.min.js"></script>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.12.2/css/bootstrap-select.min.css" />

 <select name="ddlCountry" id="Select1" class="selectpicker" data-live-search-style="begins" data-live-search="true">
    <?php foreach($location as $loc): ?>
      <option value="<?php echo $loc->city.', '.$loc->state;?>" ><?php echo $loc->city.', '.$loc->state;?></option>
    <?php endforeach; ?>
</select>

2 个答案:

答案 0 :(得分:0)

您可以克隆查询并将零件添加到这些单独的查询中。

像这样:

//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]);

答案 1 :(得分:0)

要重置查询部分,有一种方法,例如:

this.qb._clearGrouping('order'); // reset order by
this.qb._clearGrouping('group'); // reset group by

等等。