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

How to use variables in .innerJoin()?

我有的是像下面这样的代码

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)

它给了我

routine: "errorMissingColumn"

我试过给表别名,但还是一样的错误。

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)

如果它对你来说效果更好,你可以像这样逐渐建立它。显然,可以包装上述帮助器以使参数更灵活。