【发布时间】:2022-04-12 17:24:07
【问题描述】:
到目前为止一切都很好(或者我应该说“非常棒”)使用/学习 knex。
我正在尝试模拟以下条件以使列名搜索成为可选:
AND tableName.columnNameOne = 2349
AND tableName.columnNameTwo = 'some value'
AND ( tableName.columnNameThree = 285 OR someFlag = true )
.ofWhereRaw 有一个“未记录的功能”(喜欢这个表达!),它似乎可以很好地满足我的要求:
.andWhere({
'tableName.columnNameOne': columnNameOneValue,
'tableName.columnNameTwo': columnNameTwoValue,
}).andWhere((val) => {
val.where({ 'tableName.columnNameThree': columnNameThreeValue });
val.orWhereRaw('(true = ?)', columnNameThreeFlag);
});
作为一个新手并且最近转换为 knex,这是处理这种情况的可选方法吗?我对使用文档中没有的选项感到紧张,因为在未来的版本中可能会删除未记录的选项。
非常感谢,感谢你的 knex(不再续集)。
【问题讨论】:
-
你必须在 sql 查询中有那个标志吗?为什么不在 JS 中呢?
-
我正在尝试将其与 feathersJs 接口 - 并传递一个标志以“禁用”其中一个搜索选项似乎是最简单的方法(但我可能错了......)
-
好像可以在js中做flag。创建一个查询生成器,然后执行
if (columnNameThreeFlag) { qb.andWhere(/* column three stuff */); }
标签: node.js node-modules knex.js