因此,我怀疑您实际上不是在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)
我希望很明显,允许用户指定结果集中返回哪些列是容易滥用的,因此您应该非常小心,可以指定哪种数据。
如果这不是您想要的,则可能需要澄清一些问题。
,
如何动态地建立一个列名数组,但是要添加它们(例如array.push),然后将它们作为参数传播到select调用中呢?
const myColumns = ['column1']
if (conditionIsTrue){
myColumns.push('column2')
}
knex('some_table')
.select(...myColumns) // <--- the ... here turns the array into individual args
本文链接:https://www.f2er.com/3159947.html