Итак, я подозреваю, что вы на самом деле не после CASE
заявления. Они используются для проверки столбца значения и манипулирования результирующим набором. Например:
knex('some_table')
.select(
'id',
'name',
knex.raw(`CASE WHEN ${type} = 'Apricots' THEN 'Apricots!' ELSE 'Not an apricot!' END`)
)
или, если использовать более простую форму,
`CASE ${type} WHEN 'Apricots' THEN 'Hey, it's an apricot.' END`
После чего вы, хотя и не совсем ясно, видите, что условно выбираете столбец на основе строки запроса,Этого можно достичь до выдачи запроса:
const columns = [
'id',
'name'
]
if (req.query.type) {
columns.push(req.query.type)
}
knex('some_table').select(columns)
Надеюсь, должно быть ясно, что разрешение пользователям указывать, какие столбцы возвращаются в наборе результатов, открыто для злоупотреблений, поэтому вы должны быть очень осторожны,Тип данных может быть указан.
Если это не то, что вы намеревались, вам, возможно, придется уточнить ваш вопрос.