Если вы хотите написать запрос с условными частями, вы можете сделать это следующим образом:
const query = knex(PageModel.tableName);
if (this.filters.accountId) {
query
.innerJoin(
PageAccountModel.tableName,
`${PageModel.tableName}.id`,
`${PageAccountModel.tableName}.pageId`,
)
.innerJoin(
AccountModel.tableName,
`${PageAccountModel.tableName}.accountId`,
`${AccountModel.tableName}.id`,
)
.where(`${AccountModel.tableName}.id`, this.filters.accountId);
}
if (this.filters.type) {
query.where('type', this.filters.type);
}
// check the query output by
console.log(query.toSQL().sql, query.toSQL().bindings);
Это возможно, потому что построитель запросов изменчив и аддитивен, так что вы можете добавить к нему еще несколько предложений и после инициализация.
Я почти уверен, что выше приведен код, который вы хотели написать, но я не знаю, приведет ли он к правильным результатам для вас:)