Async where where

时间:2018-01-09 10:08:55

标签: sql node.js async-await knex.js

我正在使用带有Node 8的knex 0.14.2,而我正在使用async / await语句。但我只是找到了一个需要根据请求构建where子句的情况:我构建了我的主查询,执行select并向主要查询添加where,具体取决于在结果上。所以我试过

mainQuery.where(async function() {
  const res = await knex('table').select();
  if(res.x) this.where('y', 'x');
})

但是在跟踪查询时,我看到主要的一个没有where子句,而select则在它之后执行。

我认为await得不到很好的支持,但有没有正确的方法来做这件事?

谢谢

1 个答案:

答案 0 :(得分:1)

怎么样:

const res = await knex('table').select();
await mainQuery.where(function() {
  if(res.x) this.where('y', 'x');
})

Knex永远不会支持异步解析内部构建器方法回调(换句话说,它不支持将返回promise的回调函数)。