如何在.innerJoin()中使用变量?

时间:2019-10-29 07:47:32

标签: postgresql knex.js

我下面是这样的代码

var innerQuery = knex('foo_table').select('bar_column')
var joinTable = knex('some_table').select('bar_column')

knex(innerQuery).innerJoin(joinTable,joinTable.bar_column,innerQuery.bar_column)

它给了我

  

例程:“ errorMissingColumn”

我曾经尝试过给桌子提供Allias,但这是同样的错误。

1 个答案:

答案 0 :(得分:1)

Knex确实允许使用.innerJoin中的变量,但是变量必须是一个函数。它被传递给查询构建器对象(或者,对于非箭头函数,可以使用this.作为查询构建器)。因此,您可以执行以下操作:

const innerQuery = knex('foo_table').select('bar_column')
const onBarColumn = qb => qb.on('foo_table.bar_column', '=', 'some_table.bar_column')
const joinTable = qb => qb('some_table').innerJoin('foo_table', onBarColumn)

innerQuery.innerJoin(joinTable)

如果它对您更好,则可以逐步构建它。显然,可以将上述帮助器包装起来以使参数更灵活。